Thread.CurrentUICulture Propriedade

Definição

Obtém ou define a cultura atual usada pelo Resource Manager para consultar 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 de Propriedade

Um objeto que representa a cultura atual.

Exceções

A propriedade está definida como null.

A propriedade é definida para um nome de cultura que não pode ser usado para localizar um ficheiro de recurso. Os nomes de ficheiros de recursos devem incluir apenas letras, números, hífens ou sublinhados.

.NET Core e .NET 5+ apenas: Não é suportado ler ou escrever a cultura de um thread a partir de outro thread.

Exemplos

O exemplo seguinte determina se a língua da cultura da interface do tópico atual é o francês. Se não estiver, define a cultura da interface do tópico atual para 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 seguinte mostra a instrução threading que permite que a interface de utilizador de um Windows Forms seja apresentada na cultura definida no Painel de Controlo. É necessário código adicional.

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

Observações

A cultura da interface especifica os recursos que uma aplicação precisa para suportar entrada e saída do utilizador, e por defeito é a mesma que a cultura do sistema operativo. Consulte a CultureInfo aula para aprender sobre nomes e identificadores de culturas, as diferenças entre culturas invariantes, neutras e específicas, e a forma como a informação cultural afeta os threads e domínios de aplicação. Consulte a CultureInfo.CurrentUICulture propriedade para saber como é determinada a cultura de interface padrão de um thread.

Importante

A CurrentUICulture propriedade não funciona de forma fiável quando usada com qualquer thread que não seja a thread atual. No .NET Framework, ler a propriedade é fiável, embora defini-la para um thread diferente do atual não seja. No .NET Core, um InvalidOperationException é lançado se um thread tentar ler ou escrever a propriedade CurrentUICulture num thread diferente. Recomendamos que utilize a CultureInfo.CurrentUICulture propriedade para recuperar e definir a cultura atual.

O CultureInfo retorno desta 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