[英]NumericUpDown: accept both comma and dot as decimal separator
有一种方法可以强制c#NumericUpDown接受逗号和点,以分隔十进制值吗?
我已经定制了一个文本框来实现它(实际上用逗号代替点),但我很惊讶没有其他办法......
这个问题解释了如何更改分隔符,但我想同时使用它们!
NumericUpDown控件使用操作系统的区域性来使用逗号或点作为小数分隔符。
如果您希望能够处理两个分隔符并将它们视为小数分隔符(即:不是千分隔符),则可以使用验证或手动事件处理,例如:
private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.Equals('.') || e.KeyChar.Equals(','))
{
e.KeyChar = ((System.Globalization.CultureInfo)System.Globalization.CultureInfo.CurrentCulture).NumberFormat.NumberDecimalSeparator.ToCharArray()[0];
}
}
在此示例中,您将使用当前区域性的NumericDecimalSeparator替换每个点和逗号
如果将值粘贴到NumericUpDown(通过ClipBoard和Ctrl + V) ,Nicolas R提供的解决方案将无效。
我建议使用以下解决方案:与其他控件一样,NumericUpDown控件具有Text属性。 但是,它隐藏在设计师和Intellisense之外。 使用Text属性,您可以像这样编写ValueChanged事件处理程序:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
numericUpDown1.Text = numericUpDown1.Text.Replace(',', '.');
}
另请参阅: https : //msdn.microsoft.com/en-us/library/cs40s7ds.aspx
对于标准NumericUpDown控件,小数符号由操作系统的区域设置确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.