C# 如何在.net中显示值后的货币符号?

C# 如何在.net中显示值后的货币符号?,c#,asp.net,globalization,persian,C#,Asp.net,Globalization,Persian,我在我的asp.net应用程序中使用波斯文化 我把价格显示为 PriceLabel.Text = string.Format("{0:C0}", 12000); 这导致了12000يال其中يال是波斯货币符号,但我希望货币符号位于值的后面(波斯语是从左到右的,因此,我所说的“after”是指数字的左侧) 我在pricelab上尝试了Style=“text align:right”,在包含标签的标记上尝试了dir=“rtl”,但也没有任何帮助。NET库正在做它们应该做的事情,并以您要求的格式显

我在我的
asp.net
应用程序中使用波斯文化

我把价格显示为

PriceLabel.Text = string.Format("{0:C0}", 12000);
这导致了
12000يال
其中
يال
是波斯货币符号,但我希望货币符号位于值的后面(波斯语是从左到右的,因此,我所说的“after”是指数字的左侧)


我在
pricelab
上尝试了
Style=“text align:right”
,在包含标签的
标记上尝试了
dir=“rtl”
,但也没有任何帮助。

NET库正在做它们应该做的事情,并以您要求的格式显示货币。要改变这一点,您可能会破坏i18n,但如果您知道波斯货币符号的Unicode值,您可以尝试使用String.Format,例如

var cultureInfo = new CultureInfo("fa-Ir");
cultureInfo.NumberFormat.CurrencyPositivePattern = 3;
cultureInfo.NumberFormat.CurrencyNegativePattern = 3;

var result = string.Format(cultureInfo, "{0:C0}", 12000);

Console.WriteLine(result);
//Result
//12,000 ريال
PriceLabel.Text = string.Format("{0} {1}", 12000, <insert unicode char here>);
pricelab.Text=string.Format(“{0}{1}”,12000,);

我承认这是一个猜测,绝对不是完美的。

当您在文本框中键入时,以下截图将转换为波斯货币格式:

private void textBox3_TextChanged(object sender, EventArgs e)
{
    decimal Number;
    if (decimal.TryParse(textBox3.Text, out Number))
    {
        textBox3.Text = string.Format("{0:N0}", Number);
        textBox3.SelectionStart = textBox3.Text.Length;
    }
}