10

我是 Windows 窗体的新手并尝试做一些事情。我正在使用 C#。

我正在使用 Windows 窗体,并且在窗体上放置了八个文本框,并且都是带有十进制值的数字。

我喜欢实现以下结果。我的小数分隔符是逗号,千位分隔符是点。我见过像##.###,## 之类的东西,但不记得了....我怎样才能实现以下方法?

所以这个想法是,当我输入 1234 并将焦点从文本框中移开时,它应该格式化,当我再次回到文本框时,千位分隔符不应该只格式化小数分隔符。

我想我必须使用一些事件,比如 LostFocus。

输入结果

1234 1.234,00

12.34 12,34

12,34 12,34

1234567 1.234.567,00

12,34 12,34

12345,67 12.345,67

4

2 回答 2

17

在文本框中的 LostFocus 事件中,使用:

textBox1.Text = string.Format("{0:#,##0.00}", double.Parse(textBox1.Text));

在应用上述逻辑之前,请确保文本首先是双精度/整数,否则将引发异常。这个解决方案相当苛刻,艰难。

如果您希望格式采用特定文化而不是您当前计算机的文化,那么

textBox1.Text = string.Format(System.Globalization.CultureInfo.GetCultureInfo("id-ID"), "{0:#,##0.00}", double.Parse(textBox1.Text));

上面的例子是印度尼西亚货币格式,其中千位分隔符使用点(“.”)而不是逗号(“,”)。

于 2013-03-18T09:25:43.840 回答
2

也许您可以使用MaskedTextBox

您可以在失去焦点时根据输入长度调整遮罩。

于 2013-03-18T09:54:47.263 回答