2009-02-06 5 views
10

ho quasi lo stesso problema come il ragazzo in questa discussione:C# doppie mostrare virgola invece di periodo

Convert Float that has period instead of comma?

Così che il mio

double x = 234.4; 
string y = x.ToString(); 

ottengo y == "234,4";

Ancora peggio ... Double.Parse("234.4") genera un'eccezione.

Ho scritto molto codice prima che mi venisse chiesto di utilizzare il punto anziché la virgola, quindi preferirei avere un modo per cambiare il mio CultureInfo a livello globale.

C'è qualche impostazione nei progetti che posso fare?

ho provato:

 Application.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 

Essi tipo di lavoro. Funzionano per gran parte dell'applicazione, ma tutti i controlli che si trovano nelle schede di TabControl continuano a utilizzare i miei computer Localized CultureInfo.

Qualche idea su come risolvere questo?

+0

Normalmente l'impostazione di CultureInfo sul thread dovrebbe essere sufficiente. Forse stai eseguendo il codice che imposta cultureinfo su un altro thread rispetto a quello della GUI? –

+0

Huh! Questo era effettivamente il caso. Grazie! Pensavo che l'impostazione di Application.CurrentCulture avrebbe influito su tutti i thread. .... e lo fa, ma solo _if_ L'ho impostato prima di creare il mio modulo per qualche motivo. L'avevo messo sotto la creazione del modulo (ma prima dell'esecuzione). In ogni caso, caso chiuso! Grazie ancora! – Presidenten

risposta

4

Grazie a Florin Sabaus commento che ho trovato la soluzione, che era quello di mettere

 Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US"); 

in Main() a destra prima ho creato il mio modulo.

Ora non dovrò modificare tutto il mio .ToString() e Double.Parse() :-) Yey!

10

Si potrebbe provare a utilizzare

double.Parse("...", CultureInfo.InvariantCulture) 

e

x.ToString(CultureInfo.InvariantCulture) 

nelle parti del programma che si sono positivi è necessario avere periodo decimali al posto di virgola o altre impostazioni internazionali separatore decimale dipendente .

Spero che aiuti.