轉自:https://www.cnblogs.com/YangBinChina/archive/2013/03/27/2984281.html
KeyCode最為常用,記錄了鍵盤上按了哪個鍵,當使用組合鍵時如ctrl+a,其值是"A";
KeyData可以記錄組合鍵,當使用組合鍵時如ctrl+a時,其值為"A,ctrl";
KeyValue則是KeyCode的數字值,當使用組合鍵時如ctrl+a時,其值為65(A),注意不是97(a);
注意:這三個屬性對於字母鍵只記錄其大寫的值(不管你是否開啟了caplock或是按下shift鍵),如果一定要區分到底是大小寫,可以使用KeyChar來判斷。
KeyPress事件
KeyPressEventArgs參數
Handled /是否處理過KeyPress事件
KeyChar //按下的鍵對應的字符
如果I,則keychar為i,如果shift+i,則keychar為I。
如果是Ctrl+I,或ALt+I,根本不會得到一個keypress事件,因為他們是特殊的鍵序列,並非通過KeyPress發送。
需要KeyDown
KeyDown
KeyEventArgs參數
Alt 獲取一個值,該值指示是否曾按下 Alt 鍵。
Control 獲取一個值,該值指示是否曾按下 Ctrl 鍵。
Handled 獲取或設置一個值,該值指示是否處理過此事件。
KeyCode 獲取 KeyDown 或 KeyUp 事件的鍵盤代碼。
KeyData 獲取 KeyDown 或 KeyUp 事件的鍵數據。
KeyValue 獲取 KeyDown 或 KeyUp 事件的鍵盤值。
Modifiers 獲取 KeyDown 或 KeyUp 事件的修飾符標志。這些標志指示按下的 Ctrl、Shift 和 Alt 鍵的組合。
Shift 獲取一個值,該值指示是否曾按下 Shift 鍵。
SuppressKeyPress 獲取或設置一個值,該值指示鍵事件是否應傳遞到基礎控件。
如果同時按下了Ctrl+Shift+I
KeyData Keys.Ctrl+Keys。Shift+Keys。I
KeyCode Keys。I
Modifiers Keys。Ctrl+Keys。Shift
Alt false
Ctrl true
Shift true
KeyValue 73
KeyChar 不可用
盡管我們處理了KeyDown來獲得特殊的字符,但是有些特殊字符(比如箭頭鍵)在默認的情況下並不傳送給控件。為了啟用他們,自定義控件可以重寫來自基類的IsInputKey方法
如果想在鍵盤事件之外獲悉修飾鍵的狀態,可以通過Control類的靜態屬性ModifierKeys來訪問這類信息。
void MyCon-Click(object sender,EventArgs e)
{
if(Control.ModifierKeys==Keys.Control)
{
}
}
檢查在鼠標點擊事件中,Ctrl鍵是否是唯一被按下的修飾鍵。