1

我需要验证来检查按下的键是否为数字。我尝试使用不同的代码,但他们无法帮助我。在文本框中,如果用户按下Shift+numbers它会显示特殊字符,例如!,@,#......我需要验证Shift + key down event.

//代码

    private void txtNumericTextbox_KeyDown(object sender, KeyEventArgs e)
            {
                try
                {
                    if (e.Key < Key.D0 || e.Key > Key.D9)
                    {
                        if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
                        {
                            if (e.Key != Key.Back)
                            {
                                txtNumericTextbox_.BorderBrush = new SolidColorBrush(Colors.Red);
                                lblErrorMessage.Visibility = Visibility.Visible;
                                lblErrorMessage.Text = "Please Enter Numbers Only";
                            }
                            else
                            {
                                txtNumericTextbox_.BorderBrush = new SolidColorBrush(Colors.DarkGray);
                                lblErrorMessage.Visibility = Visibility.Collapsed;
                                lblErrorMessage.Text = "";
                            }
                        }
                    }
                 }
             }

我怎样才能做到这一点?

4

3 回答 3

0

您可以使用控件上的 ModifierKeys 属性来确定是否按住 shift 键。

//代码

使用它只接受数值。事件可以选择 textBox1_KeyDown nonnumberenter = false;

            if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
            {
                if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
                {
                    if (e.KeyCode != Keys.Back)
                    {
                        nonnumberenter = true;
                        string abc = "Please enter numbers only.";
                        DialogResult result1 = MessageBox.Show(abc.ToString(), "Validate numbers", MessageBoxButtons.OK);
                    }
                }
            }
            if (Control.ModifierKeys == Keys.Shift)
            {
                nonnumberenter = true;
                string abc = "Please enter numbers only.";
                DialogResult result1 = MessageBox.Show(abc.ToString(), "Validate numbers", MessageBoxButtons.OK);

            }

使用它只接受字符。事件你可以选择 textBox1_KeyPress

if (Char.IsNumber(e.KeyChar) || Char.IsSymbol(e.KeyChar) || Char.IsWhiteSpace(e.KeyChar) || Char.IsPunctuation(e.KeyChar))
            {
                MessageBox.Show("Only Char are allowed");
                e.Handled = true;
            }

希望这可以帮助。

于 2013-06-21T10:15:55.380 回答
0

您可以使用文本框按键事件

private void txt_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) )
        {
            e.Handled = true;
        }
    }
于 2013-06-21T10:29:42.563 回答
0

我一直在寻找同样的东西:只接受数字e.KeyCode但是,我在我的活动中没有找到任何内容_KeyDown,因此我调整了 Kumar 的代码以满足我的需要,并与您分享,如果它更适合您:e.Handled = true用于取消该字符的输入。

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.Key)
        {
            case Key.NumPad0:
            case Key.NumPad1:
            case Key.NumPad2:
            case Key.NumPad3:
            case Key.NumPad4:
            case Key.NumPad5:
            case Key.NumPad6:
            case Key.NumPad7:
            case Key.NumPad8:
            case Key.NumPad9:
            case Key.D0:
            case Key.D1:
            case Key.D2:
            case Key.D3:
            case Key.D4:
            case Key.D5:
            case Key.D6:
            case Key.D7:
            case Key.D8:
            case Key.D9:
                break;
            default:
                e.Handled = true;
                break;
        }
    }
于 2014-04-08T09:38:21.123 回答