Compartilhar via


Thread.CurrentUICulture Propriedade

Definição

Obtém ou define a cultura atual usada pelo Gerenciador de Recursos para pesquisar recursos específicos da cultura em tempo de execução.

public:
 property System::Globalization::CultureInfo ^ CurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public System.Globalization.CultureInfo CurrentUICulture { get; set; }
member this.CurrentUICulture : System.Globalization.CultureInfo with get, set
Public Property CurrentUICulture As CultureInfo

Valor da propriedade

Um objeto que representa a cultura atual.

Exceções

A propriedade é definida como null.

A propriedade é definida como um nome de cultura que não pode ser usado para localizar um arquivo de recurso. Os nomes de arquivo de recurso devem incluir apenas letras, números, hifens ou sublinhados.

Somente .NET Core e .NET 5+: não há suporte para ler ou escrever a cultura de um thread de outro thread.

Exemplos

O exemplo a seguir determina se o idioma da cultura da interface do usuário do thread atual é francês. Se não estiver, definirá a cultura da interface do usuário do thread atual como inglês (Estados Unidos).

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Change the current culture if the language is not French.
      CultureInfo current = Thread.CurrentThread.CurrentUICulture;
      if (current.TwoLetterISOLanguageName != "fr") {
         CultureInfo newCulture = CultureInfo.CreateSpecificCulture("en-US");
         Thread.CurrentThread.CurrentUICulture = newCulture;
         // Make current UI culture consistent with current culture.
         Thread.CurrentThread.CurrentCulture = newCulture;
      }
      Console.WriteLine("The current UI culture is {0} [{1}]",
                        Thread.CurrentThread.CurrentUICulture.NativeName,
                        Thread.CurrentThread.CurrentUICulture.Name);
      Console.WriteLine("The current culture is {0} [{1}]",
                        Thread.CurrentThread.CurrentUICulture.NativeName,
                        Thread.CurrentThread.CurrentUICulture.Name);
   }
}
// The example displays the following output:
//     The current UI culture is English (United States) [en-US]
//     The current culture is English (United States) [en-US]
open System.Globalization
open System.Threading

// Change the current culture if the language is not French.
let current = Thread.CurrentThread.CurrentUICulture

if current.TwoLetterISOLanguageName <> "fr" then
    let newCulture = CultureInfo.CreateSpecificCulture "en-US"
    Thread.CurrentThread.CurrentUICulture <- newCulture
    // Make current UI culture consistent with current culture.
    Thread.CurrentThread.CurrentCulture <- newCulture

printfn
    $"The current UI culture is {Thread.CurrentThread.CurrentUICulture.NativeName} [{Thread.CurrentThread.CurrentUICulture.Name}]"

printfn
    $"The current culture is {Thread.CurrentThread.CurrentUICulture.NativeName} [{Thread.CurrentThread.CurrentUICulture.Name}]"

// The example displays the following output:
//     The current UI culture is English (United States) [en-US]
//     The current culture is English (United States) [en-US]
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      ' Change the current culture if the language is not French.
      Dim current As CultureInfo = Thread.CurrentThread.CurrentUICulture
      If current.TwoLetterISOLanguageName <> "fr" Then
         Dim newCulture As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
         Thread.CurrentThread.CurrentUICulture = newCulture
         ' Make current UI culture consistent with current culture.
         Thread.CurrentThread.CurrentCulture = newCulture
      End If
      Console.WriteLine("The current UI culture is {0} [{1}]",
                        Thread.CurrentThread.CurrentUICulture.NativeName,
                        Thread.CurrentThread.CurrentUICulture.Name)
      Console.WriteLine("The current culture is {0} [{1}]",
                        Thread.CurrentThread.CurrentUICulture.NativeName,
                        Thread.CurrentThread.CurrentUICulture.Name)
   End Sub
End Module
' The example displays output like the following:
'     The current UI culture is English (United States) [en-US]
'     The current culture is English (United States) [en-US]

O exemplo de código a seguir mostra a instrução threading que permite que a interface do usuário de um Windows Forms seja exibida na cultura definida no Painel de Controle. Código adicional é necessário.

using System;
using System.Threading;
using System.Windows.Forms;

class UICulture : Form
{
    public UICulture()
    {
        // Set the user interface to display in the
        // same culture as that set in Control Panel.
        Thread.CurrentThread.CurrentUICulture = 
            Thread.CurrentThread.CurrentCulture;

        // Add additional code.
    }

    static void Main()
    {
        Application.Run(new UICulture());
    }
}
open System.Threading
open System.Windows.Forms

type UICulture() =
    inherit Form()

    do
        // Set the user interface to display in the
        // same culture as that set in Control Panel.
        Thread.CurrentThread.CurrentUICulture <- Thread.CurrentThread.CurrentCulture

// Add additional code.

new UICulture() |> Application.Run
Imports System.Threading
Imports System.Windows.Forms

Public Class UICulture : Inherits Form
    Sub New()

        ' Set the user interface to display in the
        ' same culture as that set in Control Panel.
        Thread.CurrentThread.CurrentUICulture = _
            Thread.CurrentThread.CurrentCulture

        ' Add additional code.
    End Sub

    Shared Sub Main()
        Application.Run(New UICulture())
    End Sub
End Class

Comentários

A cultura da interface do usuário especifica os recursos que um aplicativo precisa para dar suporte à entrada e à saída do usuário e, por padrão, é a mesma que a cultura do sistema operacional. Consulte a CultureInfo classe para saber mais sobre nomes e identificadores de cultura, as diferenças entre culturas invariáveis, neutras e específicas e a maneira como as informações de cultura afetam threads e domínios de aplicativo. Consulte a CultureInfo.CurrentUICulture propriedade para saber como a cultura de interface do usuário padrão de um thread é determinada.

Importante

A CurrentUICulture propriedade não funciona de forma confiável quando usada com qualquer thread diferente do thread atual. No .NET Framework, a leitura da propriedade é confiável, embora defini-la para um thread diferente do thread atual não seja. No .NET Core, um InvalidOperationException será gerado se um thread tentar ler ou gravar a CurrentUICulture propriedade em um thread diferente. Recomendamos que você use a CultureInfo.CurrentUICulture propriedade para recuperar e definir a cultura atual.

O CultureInfo retornado por essa propriedade pode ser uma cultura neutra. Culturas neutras não devem ser usadas com métodos de formatação, como String.Format(IFormatProvider, String, Object[]), DateTime.ToString(String, IFormatProvider)e Convert.ToString(Char, IFormatProvider). Use o CultureInfo.CreateSpecificCulture método para obter uma cultura específica ou usar a CurrentCulture propriedade.

Aplica-se a