c#winform bindingsource格式输出字符串到货币,不带$符号

本文关键字:不带 符号 货币 bindingsource 格式 输出 字符串 c#winform | 更新日期: 2023-09-27 18:19:28

我知道这个问题已经被问了很多次,但我仍然无法解决。我不太熟悉windows窗体,所以请耐心等待。

我正在尝试使用bindingsource将我的数据绑定到datarepeater中的标签。我想显示一个没有$符号的字符串到货币(例如从578288到578288.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。我将调试器放入函数中,它将我的字符串正确地格式化为货币(578288.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

应该知道得更清楚。

c#winform bindingsource格式输出字符串到货币,不带$符号

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

自定义数字格式字符串

我不知道我的答案是否仍然有用。你可以试试这个代码,至少它对我有效

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

输出:

692235.23美元`