WPF整数,仅在输入中可以为负且无空格

时间:2018-10-31 09:21:01

标签: wpf

我昨晚大部分时间沉迷于此,发现很多半答案对我这个相当常见的问题不太有效。 我有一个文本框,我想保存到数据库中的整数。我只需要允许用户输入不带空格的有效整数,即可:

-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
    }

3 个答案:

答案 0 :(得分:1)

不需要重新发明轮子。

使用Extended WPF Toolkit

中的控件,例如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); }