2012-11-13 23 views
35

Chcę ustawić domyślne informacje o kulturze dla tej klasy lub dla całej aplikacji.jak ustawić domyślne informacje o kulturze dla całej aplikacji C#

Na przykład w Turcji 3,2 = 3,2 w angielskiej

więc aplikacja używa mój lokalny, ale chcę go używać jako domyślne

System.Globalization.CultureInfo.InvariantCulture 

jaki sposób można ustawić go do tego, że jako domyślny dla określonej klasy lub dla całej aplikacji

+1

Muszę dodać, że nie-niezmienne wersje .ToString() są znacznie wolniejsze, a "Thread.CurrentThread.CurrentCulture" nie robi różnicy. – gatopeich

+0

Możliwy duplikat [Czy istnieje sposób na ustawienie kultury dla całej aplikacji? Wszystkie aktualne wątki i nowe wątki?] (Http://stackoverflow.com/questions/468791/is-there-a-way-of-setting-culture-for-a-whole-application-all-current-threads-a) –

Odpowiedz

31

Nie dla całej aplikacji lub konkretnej klasy.

CurrentUICulture i CurrentCulture można ustawić dla każdego wątku, tak jak to omówiono tutaj: Is there a way of setting culture for a whole application? All current threads and new threads?. W ogóle nie można zmienić InvariantCulture.

Przykładowy kod do zmiany kultury dla bieżącego wątku:

CultureInfo ci = new CultureInfo(theCultureString); 
Thread.CurrentThread.CurrentCulture = ci; 
Thread.CurrentThread.CurrentUICulture = ci; 

Dla klasy można ustawić/przywrócenia kultury wewnątrz metod krytycznych, ale byłoby znacznie bezpieczny w użyciu odpowiednich przesłonięcia dla większości metod związanych formatowania, które mają kulturę jako jeden z argumentów:

+0

tak jak ustawić dla okna formularza, nad którym pracuję. nie rozpoznaje wątku – MonsterMMORPG

+0

Naprawdę nie jestem zainteresowany definiowaniem dla każdego przejścia. nie jest możliwe ustawienie go dla wątku formularza. wiesz, kiedy tworzysz nowy projekt formularza okna? – MonsterMMORPG

+0

@MonsterMMORPG, co/gdzie nie rozpoznaje wątku? –