在silverlight 4中验证按下键事件的文本框是否只接受数字

本文关键字:是否 文本 数字 事件 silverlight 验证 | 更新日期: 2023-09-27 18:19:16

我需要一个验证来检查按下的键是否为数字。我尝试了不同的代码,但他们不能帮助我。在文本框中,如果用户按下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 = "";
                            }
                        }
                    }
                 }
             }

我怎么才能做到呢?

在silverlight 4中验证按下键事件的文本框是否只接受数字

您可以使用控件上的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;
            }

可以使用文本框按键事件

private void txt_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) )
        {
            e.Handled = true;
        }
    }

我在寻找同样的东西:只接受数字。然而,我没有在我的_KeyDown事件中找到任何e.KeyCode,所以我改编了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;
        }
    }