Comment utiliser NumberFormatInfo pour supprimer les parenthèses pour les valeurs négatives

Nous utilisons actuellement les suivants pour la création de valeurs en usd dans notre application web:

string.Format("{0:C0}", dollarValue );

Dans cet exemple, si dollarValue est de 145, puis nous allons voir: $145. Si c'est -145, puis nous allons voir de dollars (145) plutôt que$145. Notez que, pour nous, dollarValue est un double, mais il pourrait être n'importe quel nombre type. Je pense qu'.

De toute façon, ce que je veux, c'est pour qu'il soit $145 ou -$145.

Maintenant, d'après mes recherches, il pourrait être possible de le faire à l'aide de la classe NumberFormatInfo. Je ne peux pas comprendre comment l'utiliser, et je ne peux pas trouver un exemple valable. Je l'ai fait voir à cette question ici: C# création d'un custom NumberFormatInfo d'affichage "Libre" lorsque la valeur de la monnaie est de $0.00 mais l'exemple de MSDN liés à cette question semble un peu différent de ce que je veux vraiment faire.

Je me rends compte, j'ai besoin de faire quelque chose de l'suivantes:

double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );

où someIFormatProvider est susceptible de type NumberFormatInfo. Maintenant, ce que j'ai fait est-ce:

NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; //The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );

...et je reçois une "Instance est en Lecture Seule" exception. Alors que la "documentation" pour les CurrencyNegativePattern bien dit que vous pouvez DÉFINIR et OBTENIR la valeur, apparemment, vous ne pouvez pas. Aussi, NumberFormatInfo est une classe scellée. Je ne peux pas facilement, créer une nouvelle classe basée enlever et remplacer la valeur.

Je suis à une perte quant à la façon de traiter avec cela. Maintenant, ma solution est de simplement nier ma valeur négative et avoir un résultat positif que je ne le string.Format(...) de nouveau. Oui, je me rends compte il n'y a pas de signe négatif en face de cela, mais, bien sûr, qui est facilement résolu par l'ajout d'un "-" devant le résultat autant que nécessaire.

Ce que quelqu'un serait capable de me donner un exemple de la façon d'utiliser efficacement les NumbefFormatInfo classe correctement dans cette situation? Merci.

Êtes-vous sûr que l'erreur vient de réglage de la CurrencyNegativePattern d'une instance de NumberFormatInfo? J'ai vu cela en Lecture Seule exception, mais elle est relevée d'essayer de modifier le CurrentUICulture propriétés?
Le code fonctionne pour moi (après la fixation de l'affaire sur NumberformatInfo)

OriginalL'auteur Dan7el | 2012-06-13