如何格式化窗口表单文本框有千位分隔符和十进制separtor为数字输入

我是Winforms的新手,并尝试做点什么。 我正在使用C#。 我正在使用Windows窗体,我在表单上放了一个8文本框,所有都是带小数值的数字。 我想达到以下结果。 我的小数点分隔符是逗号,千位分隔符是一个点。 我见过像##。###,##或其他什么但不记得的东西……有人可以建议如何实现以下方法吗?

所以我的想法是当我输入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

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

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

在应用上述逻辑之前,请确保文本是双/整数,否则将引发exception。 这种解决方案相当苛刻,坚韧。

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

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

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

也许你可以使用MaskedTextBox

http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

失去焦点时,您可以根据输入长度调整遮罩。 希望这有用。