在按键事件上验证文本框以仅接受silverlight 4中的数字

时间:2013-06-21 10:15:07

标签: c# silverlight textbox

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

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分: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;
            }

希望这有帮助。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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;
        }
    }