簡體   English   中英

如何檢測在文本框的c#keydown事件中輸入的多個鍵?

[英]How to detect multiple keys entered in c# keydown event of textbox?

我想在Silverlight中設計一個數字文本框

我添加了TextBox的keydown事件處理keypress

內部事件中,我驗證在文本框中輸入的密鑰。

事件如下

  private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (!this.Validate(sender,e))
            e.Handled = true;
    }

功能驗證如下

  private bool Validate(object sender, KeyEventArgs e)
    {

        if (e.Key == Key.Enter) //accept enter and tab
        {
            return true;
        }
        if (e.Key == Key.Tab)
        {
            return true;
        }

        if (e.Key < Key.D0 || e.Key > Key.D9) //accept number on alphnumeric key
            if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9) //accept number fomr NumPad
                if (e.Key != Key.Back) //accept backspace
                    return false;

        return true;
    }

我無法檢測到shift和Key.D0到Key.D1,即

SHIFT + 1返回“

SHIFT + 3會像其他所有特殊鍵一樣返回“ ”。

我不希望用戶在文本框中輸入特殊字符。

我如何處理此按鍵事件?

在Silverlight中,我認為KeyEventArgs類中沒有任何Modifier ,而在Keyboard

    public void KeyDown(KeyEventArgs e)
    {
        if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.D0)
        {
            ControlZero();
        }
    }

e應具有一個屬性,該屬性將告訴您是否按下了Shift,Control或Alt。 e.Modifiers還可以為您提供有關已按下哪些附加修飾符鍵的其他信息。

要取消字符,可以將e.Handled設置為True ,這將導致控件忽略按鍵。

textBox2.Text = string.Empty;
textBox2.Text = e.Modifiers.ToString() + " + " + e.KeyCode.ToString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM