我昨晚大部分时间沉迷于此,发现很多半答案对我这个相当常见的问题不太有效。 我有一个文本框,我想保存到数据库中的整数。我只需要允许用户输入不带空格的有效整数,即可:
-14 valid
14 valid
0 valid
invalid
14.3 invalid
1-4 invalid
A14 invalid
14A invalid
"14 " (has whitespace) invalid
14 (has whitespace) invalid
1 4 (has whitespace) invalid
您得到图片。只能是整数。
形成这种方法的关键是关键。但我无法弄清楚/找到正则表达式/替代项以正确验证它
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
//Validation code here
}
答案 0 :(得分:1)
不需要重新发明轮子。
中的控件,例如IntegerUpDown答案 1 :(得分:0)
我一直在使用MVVM,因此,在仔细查看经过修饰的“ Sugested Answer”中的一堆答案之后 批准的答案未正确验证。并且所有正则表达式示例在处理负数时都无法解释-的顺序。
但是使用MVVM,您可以创建绑定“ Mode = TwoWay和UpdateSourceTrigger = PropertyChanged”,然后验证其自身。
如果您不希望双向绑定,将无法工作,因此理想的正则表达式解决方案仍有待解决。
但这解决了我的问题。
答案 2 :(得分:0)
我为此使用正则表达式:私有静态只读正则表达式_regex = new Regex(“ [^ 0-9]”);
您可以为其private static bool IsTextAllowed(string text)
{
return !_regex.IsMatch(text);
}
设置属性
然后将其命名为private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}