2010-10-12 5 views
4
CultureInfo culture = new CultureInfo("en-US"); 

     culture.DateTimeFormat.DateSeparator = "/"; 
     culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 

     //dekadikoi arithmoi 
     culture.NumberFormat.NumberDecimalSeparator = "."; 
     Thread.CurrentThread.CurrentCulture = culture; 
     Thread.CurrentThread.CurrentUICulture = culture; 

Comme il est nécessaire de travailler de cette façon partout! Le problème est que faire new CultureInfo("en-US"); tous les autres paramètres spécifiques à l'ordinateur sont omis ... Existe-t-il un moyen de copier le CurrentCulture? J'ai essayé de modifier CurrentCulture mais je m'y suis en lecture seule erreur ...Modifier la culture actuelle?

+1

Vous ne pouvez pas modifier la propriété CultureInfo.CurrentCulture car il est en lecture seule et il a seulement la méthode « Get ». – virious

Répondre

11
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 

culture.DateTimeFormat.DateSeparator = "/"; 
culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; 

//dekadikoi arithmoi 
culture.NumberFormat.NumberDecimalSeparator = "."; 
Thread.CurrentThread.CurrentCulture = culture; 
Thread.CurrentThread.CurrentUICulture = culture; 

vous pouvez utiliser:

CultureInfo culture = (CultureInfo)CultureInfo.CurrentUICulture.Clone(); 

à la place.

1

Qu'en est-ce: CultureInfo culture=CultureInfo.CurrentCulture;

4

il suffit de changer une ligne:

CultureInfo culture = CultureInfo.GetCultureInfo("en-US"); 
1

Il suffit de prendre une copie de la classe et CurrentCulture modifiez-le comme bon vous semble. Si vous avez besoin de modifier le CultureInfo du thread lui-même (plutôt que d'utiliser une copie), vous devez donner à votre code une autorisation de sécurité et définir la propriété ControlThread sur true. (Voir le lien par exemple)

0

Suite à la solution de Jon Hanna Je suggère de commencer sur une culture spécifique, comme CurrentCulture peut être réglé à n'importe quoi.

public static CultureInfo GetCustomCulture(string baseCulture = "en-ZA", char numberDecimalSeperator = '.', char listSeperator = ',') { 
    var culture = CultureInfo.GetCultureInfo(baseCulture).Clone(); 

    culture.NumberFormat.NumberDecimalSeparator = numberDecimalSeperator + ""; 
    culture.TextInfo.ListSeparator = listSeperator + ""; 

    return culture; 
} 

Et puis ajoutez cette ligne au début de Program.cs

System.Globalization.CultureInfo.CurrentCulture = GetCustomCulture(); 
+0

Que la culture actuelle puisse être définie à n'importe quoi est précisément la raison pour commencer avec la culture actuelle. Cela modifiera tous les paramètres destinés à rester identiques à la culture actuelle. –

+0

@JonHanna, j'ai remarqué que vous clonez la culture dans votre solution. Est-ce ce que vous voulez dire? Cela n'a pas vraiment d'importance dans le cas où j'ai dû utiliser cette culture puisque nous n'utilisons pas les réglages d'origine, mais c'est quand même une bonne prise. Je vous remercie! – Peet

Questions connexes