Pregunta

Estoy tratando de dar formato a una moneda (Swiss Frank - de-CH) con un símbolo (CHF) que es diferente de lo que es la cultura .Net por defecto (SFR.). El problema es que el NumberFormat para el cultivo es de sólo lectura.

¿Hay una manera simple de resolver este problema utilizando CultureInfo y NumberFormat? ¿Hay alguna manera de que pueda anular el CURRENCYSYMBOL?

Ejemplo:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

Esto error en la configuración del NumberFormat.CurrencySymbol porque NumberFormat es **ReadOnly**.

Gracias!

¿Fue útil?

Solución

Clone Llamar en el CultureInfo, lo que creará una versión mutable, a continuación, establezca el símbolo de moneda.

Podría ser más específico: buscar el NumberFormatInfo y sólo clonar eso. Es un poco más elegante, la OMI, a menos que necesite cambiar nada más en la cultura.

Ejemplo en C #:

using System;

using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo original = CultureInfo.GetCultureInfo(2055);
        NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone();
        mutableNfi.CurrencySymbol = "X";
        Console.WriteLine(50.ToString("C", mutableNfi));
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top