2009-02-19 21 views

回答

12

編輯:不知何故,我誤解了你的問題,包括檢查一個有效的字符。你修改了嗎?我已經添加了每個的描述。

  • 鍵控代碼是密鑰的Keys枚舉值是向下
  • KEYDATA相同鍵控代碼,但與任何SHIFT組合/ CTRL/ALT鍵
  • KEYVALUE是簡單地KeyCode的整數表示

如果你只是需要t他的角色,我可能會推薦使用KeyPress事件並使用KeyPressEventArgsKeyChar財產。然後,您可以使用Char.IsLetterOrDigit()來確定它是否是有效的字符。

或者,您可能可以將KeyEventArgs.KeyCode轉換爲char,然後使用Char.IsLetterOrDigit。

+0

我不同意......你假設用戶不想捕捉任何修飾符,並且他的輸入僅限於鍵盤ASCII。 – Cerebrus 2009-02-19 08:10:32

+0

IsLetterOrDigit僅適用於ascii? – Svish 2009-02-19 08:11:58

+0

如果字符不是拉丁文,IsLetterOrDigit使用CharUnicodeInfo.GetUnicodeCategory。 – 2009-02-19 08:32:03

1

我會建議使用KeyCode屬性來檢查大多數操作的Keys枚舉。但是,下面的一些基本差異可能會幫助您更好地確定您需要哪種情況。

差異:

  • KeyCode - 表示,表示目前狀態爲Down鍵的Keys枚舉值。

  • KeyData - 同KeyCode,除了它具有在改性劑的形式的附加信息 - 移位/ Ctrl鍵/ ALT等

  • KeyValue - 所述KeyCode的數值。

0

非常基本使用的KeyDown

private void tbSomeText_KeyDown (object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.B && e.Modifiers != Keys.Shift) { 

      MessageBox.Show("You Pressed b"); 
     } 
     else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Shift) { 
      MessageBox.Show("You Pressed Shift+A"); 
     } 
    } 
0

my answerother question

使用KeyPressed事件。

引用MSDN:

甲KeyPressEventArgs指定當用戶按下一個鍵,它由該字符。例如,當用戶按下SHIFT + K,作爲keyChar屬性返回一個大寫字母K.

這樣你就不需要更動e.KeyCodee.KeyDatae.KeyValue

相關問題