1

我试图弄清楚如何做到这一点,以便如果我按下按钮执行操作(例如显示消息框)并且我的 maskedtextbox 的文本不是数字,那么它会执行类似说你只能在 TextBox 中有一个数字或类似的东西。我似乎无法弄清楚。

我试过用这个:

if (!System.Text.RegularExpressions.Regex.IsMatch(binTxtbx.Text, @"0-9"))
            e.Handled = true;

但如果我使用它,它不会将任何文本放入 maskedtextbox。

如果你知道是否有人问过我同样的问题,请告诉我。

4

3 回答 3

3

如果您不介意使用 maskedTextBox,并且只是不喜欢下划线(正如您在评论中提到的那样),只需将 PromptChar 更改为空白即可。

您可以在 MaskedTextBox 属性的设计视图中执行此操作,也可以在如下代码中执行此操作:

myMaskedTextBox.PromptChar = ' ';


编辑:

或者,(如果您不想使用 maskedTextBox)您可以将 KeyDown 事件连接到 EventHandler,如下所示:

    private void numericComboBox_KeyDown(object sender, KeyEventArgs e)
    {
        try
        {
            e.SuppressKeyPress = false;

            // Determine whether the keystroke is a number from the top of the keyboard.
            if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
            {
                // Determine whether the keystroke is a number from the keypad.
                if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
                {
                    // Determine whether the keystroke is a backspace or arrow key
                    if ((e.KeyCode != Keys.Back) && (e.KeyCode != Keys.Up) && (e.KeyCode != Keys.Right) && (e.KeyCode != Keys.Down) && (e.KeyCode != Keys.Left))
                    {
                        // A non-numerical keystroke was pressed.
                        // Set the flag to true and evaluate in KeyPress event.
                        e.SuppressKeyPress = true;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            //Handle any exception here...
        }
    }
于 2013-01-22T21:05:52.160 回答
1

表达式应[0-9]带有方括号。

完整代码:

!System.Text.RegularExpressions.Regex.IsMatch(binTxtbx.Text, "^[0-9]*$")
于 2013-01-19T02:07:07.687 回答
1

也许你可以使用

if (binTxtbx.Text.Any(c => char.IsNumber(c)))
{
   // found a number in the string
}

或者

if (binTxtbx.Text.All(c => char.IsNumber(c)))
{
    // the string is a number
}
于 2013-01-19T04:25:56.430 回答