momento stiamo utilizzando i seguenti per la creazione di valori in dollari degli Stati Uniti nella nostra applicazione web:Come utilizzare NumberFormatInfo per rimuovere le parentesi per i valori negativi
string.Format("{0:C0}", dollarValue);
In questo esempio, se dollarValue è 145, poi ci vedi: $ 145. Se è -145, vedremo ($ 145) anziché - $ 145. Nota che per noi, dollarValue è un doppio, ma potrebbe essere qualsiasi tipo di numero. Credo.
In ogni caso, quello che voglio è che sia $ 145 o - $ 145.
Ora, secondo la mia ricerca, potrebbe essere possibile farlo utilizzando la classe NumberFormatInfo. Non riesco a capire come usarlo, e non riesco a trovare alcun esempio valido. Ho visto questa domanda qui: C# creating a custom NumberFormatInfo to display "Free" when a currency value is $0.00 ma l'esempio da MSDN collegato a questa domanda sembra un po 'diverso da quello che voglio veramente fare.
mi rendo conto, ho bisogno di fare qualcosa di quanto segue:
double dollarValue = -145d;
string myMoney = dollarValue.ToString("C0", someIFormatProvider);
dove someIFormatProvider rischia di tipo NumberFormatInfo. Ora, quello che ho fatto è questo:
NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString("C0", ni);
... e ottengo un'eccezione "Istanza è di sola lettura". Mentre la "documentazione" per la proprietà CurrencyNegativePattern dice che è possibile impostare e ottenere il valore, a quanto pare, non è possibile. Inoltre, NumberFormatInfo è una classe sigillata. Non riesco facilmente a creare una nuova classe basandoci su di essa e sovrascrivendo il valore.
Sono in perdita su come affrontare questo. In questo momento, la mia soluzione è di negare il mio valore negativo e avere un risultato positivo che faccio di nuovo il string.Format(...)
. Sì, mi rendo conto che non c'è alcun segno negativo davanti a questo, ma, naturalmente, questo è facilmente risolto aggiungendo un "-" di fronte al risultato, se necessario.
Qualcuno sarebbe in grado di fornirmi un esempio funzionante di come utilizzare correttamente la classe NumbefFormatInfo correttamente in questa situazione? Grazie.
Sei sicuro l'errore deriva dall'impostazione di CurrencyNegativePattern di un'istanza NumberFormatInfo? Ho visto questa eccezione di sola lettura, ma viene sollevato dal tentativo di modificare le proprietà CurrentUICulture? – Tisho
Il codice funziona per me (dopo aver risolto il caso su 'NumberformatInfo') –