WinForms,我有一个文本框离开事件,在文本框中提示用户添加价格示例:
他需要在文本框中提供价格,让他说他只写5,文本框离开事件应该让他5.00并且它正在工作但是其他使用其他文化的计算机出现问题例如,在我遇到问题的计算机中,点'.'
这被视为逗号','
,如果用户提示5.43
,他将543,00
而不是5.43
或5
获取5.00
他会得到逗号。我需要为每台计算机获取,无论文化是什么,只能使用Point this'。'
这是我的代码:
decimal number = 0;
if (Decimal.TryParse(textBox20.Text, out number))
{
textBox20.Text = Decimal.Parse(textBox20.Text).ToString("0.00");
}
else
{
textBox20.Text = "0.00";
}
答案 0 :(得分:1)
只需使用decimal.TryParse
的重载IFormatProvider
,并指定不变文化。然后使用它进行格式化。 (我假设您希望在解析和格式化时始终将其视为“十进制分隔符的点”。)
哦,只解析一次 - 为什么要两次?
decimal number = 0;
if (Decimal.TryParse(textBox20.Text, NumberStyles.Number,
CultureInfo.InvariantCulture, out number))
{
textBox20.Text = number.ToString("0.00", CultureInfo.InvariantCulture);
}
else
{
textBox20.Text = "0.00";
}
鉴于0也将以这种方式格式化,你甚至不需要任何条件:
decimal number;
decimal.TryParse(textBox20.Text, NumberStyles.Number,
CultureInfo.InvariantCulture, out number);
textBox20.Text = number.ToString("0.00", CultureInfo.InvariantCulture);
在这种情况下,我们不关心TryParse
的返回值,因为如果失败,number
将为0,这很好......