c# winform bindingsource format输出字符串到货币没有$符号

c# winform bindingsource format output string to currency without the $ symbol

我知道这个问题已经被问过很多次了,但我还是无法解决这个问题。我对 windows 表格相当陌生,所以请多多包涵。

我正在尝试使用 bindingsource 将我的数据绑定到 datarepeater 中的标签。我想在没有 $ 符号的情况下将字符串显示为货币(例如从 578288 到 578,288.00)。

我试过下面的代码:

Binding b = new Binding("Text", BSource, "PaidAmt");
b.Format += new ConvertEventHandler(DecimalToCurrency);
lblPaidAmount.DataBindings.Add(b);

private void DecimalToCurrency(object sender, ConvertEventArgs cevent)
{
    if (cevent.DesiredType != typeof(string)) return;

    cevent.Value = ((decimal)cevent.Value).ToString("c");
}

但它仍然将我的字符串输出为 578288。我将调试器步进该函数,它正确地将我的字符串格式化为货币($578,288.00,不完全是我想要的,但至少是某种东西)但它没有显示在标签。

我也试过这个:

lblPaidAmount.DataBindings.Add("Text", BSource, "PaidAmt", true, DataSourceUpdateMode.Never, "", "0.00");

但我无法使用逗号,因为并非每个字符串都具有相同的长度(我知道这也不完全正确)。

如果这些代码有任何问题以及更正方法,有人可以指出我吗?或者任何解决方法?

使用这个得到了我想要的输出:

lblPaidAmount.DataBindings.Add("Text", BSource, "AD1008", true, DataSourceUpdateMode.Never, "", "#,#.00");

我刚刚将字符串格式从 0.00 更改为 #,#.00

早该知道的更好。

您需要数字格式中的千位分隔符 #,0.00

Custom Numeric Format Strings

不知道我的回答还有没有用。 你可以试试这个代码,至少它对我有用。

txtSalary.DataBindings.Add(new Binding("text", Bs, "Salary"));
txtSalary.DataBindings[0].FormattingEnabled = true;
txtSalary.DataBindings[0].FormatString = "C2";

输出:

$ 692,235.23`