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
应该知道得更清楚。
您需要数字格式为#,0.00
的千位分隔符
自定义数字格式字符串
我不知道我的答案是否仍然有用。你可以试试这个代码,至少它对我有效
txtSalary.DataBindings.Add(new Binding("text", Bs, "Salary"));
txtSalary.DataBindings[0].FormattingEnabled = true;
txtSalary.DataBindings[0].FormatString = "C2";
输出:
692235.23美元`