2017-08-29 1 views
0

J'ai une application WinForms sur le système russe. Pour le nombre de raisons, je préfère utiliser la mise en forme de valeurs flottantes de InvariantCulture (qui est l'anglais).Comment s'assurer que localculture est utilisé pour l'interface mais pas pour les valeurs à virgule flottante dans WinForms?

Après avoir trouvé des solutions sur Internet, j'ai défini InvariantCulture comme culture par défaut pour l'application. Cependant, par conséquent, les versions localisées de formulaires (avec du texte russe) ne sont jamais chargées.

Comment puis-je m'assurer que les formulaires avec du texte russe sont automatiquement chargés sur des machines russes, mais pour les valeurs à virgule flottante, les conversions de chaîne InvariantCulture est utilisé?

+0

Set russe paramètres régionaux, puis changez le format numérique. – Sinatr

+0

Ajouter en tant que réponse – Srv19

Répondre

0

Vous pouvez modifier une propriété de CultureInfo après l'avoir créé pour la culture spécifique, par exemple:

// create culture with default values for russian 
var culture = new CultureInfo("ru-RU"); 
// change number format 
culture.NumberFormat = new NumberFormatInfo { NumberDecimalSeparator = "." }; 
// set culture 
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = culture; 

Après cela, vous n'avez pas besoin de spécifier la culture pour l'analyse syntaxique/mise en forme:

var test = double.Parse("1.234"); // would throw without changing NumberFormat 
MessageBox.Show(test.ToString()); // output: 1.234 
+0

Merci! Cette possiblité est passée devant moi – Srv19