KeyPress 和KeyDown 、KeyPress之间的区别
(一)鍵事件按下列順序發(fā)生:
KeyDown
KeyPress
KeyUp
(二)KeyDown觸發(fā)后,不一定觸發(fā)KeyUp,當KeyDown 按下后,拖動鼠標,那么將不會觸發(fā)KeyUp事件。
(三)定義
KeyDown:在控件有焦點的情況下按下鍵時發(fā)生。
KeyPress:在控件有焦點的情況下按下鍵時發(fā)生。(下面會說和KeyDown 的區(qū)別)
KeyUp:在控件有焦點的情況下釋放鍵時發(fā)生。
(四)KeyPress 和KeyDown 、KeyPress之間的區(qū)別
1.KeyPress主要用來捕獲數字(注意:包括Shift+數字的符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符KeyDown 和KeyUp 通??梢圆东@鍵盤除了PrScrn所有按鍵(這里不討論特殊鍵盤的特殊鍵)
2.KeyPress 只能捕獲單個字符KeyDown 和KeyUp 可以捕獲組合鍵。
3.KeyPress 可以捕獲單個字符的大小寫
4.KeyDown和KeyUp 對于單個字符捕獲的KeyValue都是一個值,也就是不能判斷單個字符的大小寫。
5.KeyPress 不區(qū)分小鍵盤和主鍵盤的數字字符。KeyDown 和KeyUp 區(qū)分小鍵盤和主鍵盤的數字字符。
6.其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。
(五)系統(tǒng)組合鍵的判定
在使用鍵盤的時候,通常會使用到CTRL+SHIFT+ALT 類似的組合鍵功能。對于此,我們如何來判定?
通過KeyUp 事件能夠來處理(這里說明一下為什么不用KeyDown,因為在判定KeyDown的時候,CTRL、SHIFT和ALT 屬于一直按下狀態(tài),然后再加另外一個鍵是不能準確捕獲組合鍵,所以使用KeyDown 是不能準確判斷出的,要通過KeyUp 事件來判定)
1.KeyDown事件
KeyDown事件在首次按下某個鍵時發(fā)生。
示例 KeyDown事件的使用
本示例中,判斷用戶是否按下特殊鍵,如果是,則顯示在窗體的標題欄上。
程序主要代碼如下。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
string G_str_Mode = "";
string G_str_text = e.KeyCode + ":" + e.Modifiers + ":" + e.KeyData + ":" + "(" + e.KeyValue + ")";
if (e.Shift == true)
G_str_Mode = "Shift 鍵被按下";
if (e.Control == true)
G_str_Mode = "Ctrl 鍵被按下";
if (e.Alt == true)
G_str_Mode = "Alt 鍵被按下";
this.Text = G_str_text + G_str_Mode;
}
注意:上面的代碼中,KeyDown事件取得了一個KeyEventArgs對象e,并返回相關的按鍵信息,KeyEventArgs參數提供數個屬性值,這些屬性根據鍵盤上被按下的按鍵返回對應值。KeyEventArgs參數的屬性值如表所示。
表 KeyEventArgs屬性值
| 屬性值 | 說明 |
| Control | 獲取一個值,該值指示是否曾按下Ctrl鍵 |
| KeyCode | 獲取KeyDown或KeyUp事件的鍵盤代碼 |
| KeyData | 獲取KeyDown或KeyUp事件的鍵數據 |
| KeyData | 獲取KeyDown或KeyUp事件的鍵數據 |
| KeyValue | 獲取KeyDown或KeyUp事件的鍵盤值 |
| Modifiers | 獲取KeyDown或KeyUp事件的修飾符標志。這些標志指示按下的Ctrl、Shift和Alt鍵的組合 |
| Shift | 獲取一個值,該值指示是否曾按下Shift鍵 |
2.Keyup事件
Keyup事件在釋放鍵時發(fā)生。
示例 Keyup事件的使用
本示例實現的是,當程序運行的時候,按完鍵盤后,自動設置窗體的大小。
程序主要代碼如下。
private void frmKeyDownUP_KeyUp(object sender, KeyEventArgs e)
{
this.ClientSize = new System.Drawing.Size(800,100);
}
(一)鍵事件按下列順序發(fā)生:
KeyDown
KeyPress
KeyUp
(二)KeyDown觸發(fā)后,不一定觸發(fā)KeyUp,當KeyDown 按下后,拖動鼠標,那么將不會觸發(fā)KeyUp事件。
(三)定義
KeyDown:在控件有焦點的情況下按下鍵時發(fā)生。
KeyPress:在控件有焦點的情況下按下鍵時發(fā)生。(下面會說和KeyDown 的區(qū)別)
KeyUp:在控件有焦點的情況下釋放鍵時發(fā)生。
(四)KeyPress 和KeyDown 、KeyPress之間的區(qū)別
1.KeyPress主要用來捕獲數字(注意:包括Shift+數字的符號)、字母(注意:包括大小寫)、小鍵盤等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜單鍵}、{開始鍵}和方向鍵外的ANSI字符KeyDown 和KeyUp 通??梢圆东@鍵盤除了PrScrn所有按鍵(這里不討論特殊鍵盤的特殊鍵)
2.KeyPress 只能捕獲單個字符KeyDown 和KeyUp 可以捕獲組合鍵。
3.KeyPress 可以捕獲單個字符的大小寫
4.KeyDown和KeyUp 對于單個字符捕獲的KeyValue都是一個值,也就是不能判斷單個字符的大小寫。
5.KeyPress 不區(qū)分小鍵盤和主鍵盤的數字字符。KeyDown 和KeyUp 區(qū)分小鍵盤和主鍵盤的數字字符。
6.其中PrScrn 按鍵KeyPress、KeyDown和KeyUp 都不能捕獲。
(五)系統(tǒng)組合鍵的判定
在使用鍵盤的時候,通常會使用到CTRL+SHIFT+ALT 類似的組合鍵功能。對于此,我們如何來判定?
通過KeyUp 事件能夠來處理(這里說明一下為什么不用KeyDown,因為在判定KeyDown的時候,CTRL、SHIFT和ALT 屬于一直按下狀態(tài),然后再加另外一個鍵是不能準確捕獲組合鍵,所以使用KeyDown 是不能準確判斷出的,要通過KeyUp 事件來判定)
1.KeyDown事件
KeyDown事件在首次按下某個鍵時發(fā)生。
示例 KeyDown事件的使用
本示例中,判斷用戶是否按下特殊鍵,如果是,則顯示在窗體的標題欄上。
程序主要代碼如下。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
string G_str_Mode = "";
string G_str_text = e.KeyCode + ":" + e.Modifiers + ":" + e.KeyData + ":" + "(" + e.KeyValue + ")";
if (e.Shift == true)
G_str_Mode = "Shift 鍵被按下";
if (e.Control == true)
G_str_Mode = "Ctrl 鍵被按下";
if (e.Alt == true)
G_str_Mode = "Alt 鍵被按下";
this.Text = G_str_text + G_str_Mode;
}
注意:上面的代碼中,KeyDown事件取得了一個KeyEventArgs對象e,并返回相關的按鍵信息,KeyEventArgs參數提供數個屬性值,這些屬性根據鍵盤上被按下的按鍵返回對應值。KeyEventArgs參數的屬性值如表所示。
表 KeyEventArgs屬性值
| 屬性值 | 說明 |
| Control | 獲取一個值,該值指示是否曾按下Ctrl鍵 |
| KeyCode | 獲取KeyDown或KeyUp事件的鍵盤代碼 |
| KeyData | 獲取KeyDown或KeyUp事件的鍵數據 |
| KeyData | 獲取KeyDown或KeyUp事件的鍵數據 |
| KeyValue | 獲取KeyDown或KeyUp事件的鍵盤值 |
| Modifiers | 獲取KeyDown或KeyUp事件的修飾符標志。這些標志指示按下的Ctrl、Shift和Alt鍵的組合 |
| Shift | 獲取一個值,該值指示是否曾按下Shift鍵 |
2.Keyup事件
Keyup事件在釋放鍵時發(fā)生。
示例 Keyup事件的使用
本示例實現的是,當程序運行的時候,按完鍵盤后,自動設置窗體的大小。
程序主要代碼如下。
private void frmKeyDownUP_KeyUp(object sender, KeyEventArgs e)
{
this.ClientSize = new System.Drawing.Size(800,100);
}
總結
以上是生活随笔為你收集整理的KeyPress 和KeyDown 、KeyPress之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在虚拟机上的关于Apache(阿帕奇)(
- 下一篇: 5 个免版权高清视频素材下载网站(一)