C#键盘事件处理
private?void?FrmMain_Load(object?sender,?EventArgs?e)
{
????this.KeyPreview?=?true;//獲取或設(shè)置一個(gè)值,該值指示在將鍵事件傳遞到具有焦點(diǎn)的控件前,窗體是否將接收此鍵事件。
}
private?void?FrmMain_KeyUp(object?sender,?KeyEventArgs?e)
{
????if?(Keys.F1?==?e.KeyCode)
? ? {
? ? ? ? //MessageBox.Show("您所按動(dòng)的鍵是:"?+?e.KeyCode.ToString());
? ? ? ??Help.ShowHelp(this,@"C:\Users\HongYe\Desktop\RevitAPI.chm");
? ? }
}
鍵盤事件是在用戶按下鍵盤上的一個(gè)鍵的時(shí)候發(fā)生的,可分為兩類。第一類是KeyPress事件,當(dāng)按下的鍵表示的是一個(gè)ASCII字符的時(shí)候就會(huì)觸發(fā)這類事件,可通過他的KeyPressEventArgs類型參數(shù)的屬性KeyChar來確定按下的鍵的ASCII。使用KeyPress時(shí)間無法判斷是否按下了修改鍵(Shift,Alt和Ctrl),為了判斷這些動(dòng)作,就要處理KeyUp?或KeyDown事件,這些時(shí)間組成了第二類事件。該類事件有一個(gè)KeyEventsArgs類型參數(shù),通過該參數(shù)可以測(cè)試是否按下了一些修改鍵。
1.?????? KeyPressEventArgs類的主屬性(KeyPress事件的一個(gè)參數(shù)類型)
(1).Handle屬性:用來獲取或設(shè)置一個(gè)值,該值指示是否處理過KeyPress事件。
(2).KeyChar屬性:用來獲取按下的鍵對(duì)應(yīng)的字符,通常是該鍵的ASCII瑪(返回的是鍵盤的值,如按‘K‘返回就是K)。
2.KeyEventArgs類的主屬性(KeyUp和KeyDown事件的一個(gè)參數(shù))
(1).Alt屬性:用來獲取一個(gè)值,該值提示是否曾按下了Alt鍵
(2).Control屬性:用來獲取一個(gè)值,該值提示是否曾按下了Crtl鍵
(3).Shift屬性:用來獲取一個(gè)值,該值提示是否曾按下了Shift鍵
(4).Handle屬性:用來獲取一個(gè)值,該值提示是否曾處理過此事件
(5).KeyCode屬性:以Keys枚舉值返回鍵盤鍵的鍵碼,該屬性不包含修改鍵信息,用于測(cè)試指定的鍵盤鍵
(6).KeyData屬性:以Keys枚舉值返回鍵盤鍵的鍵碼,該屬性包含修改鍵信息,用于判斷按下鍵的所有信息(可返回組合鍵)
(7).KeyValue屬性:以整數(shù)形式返回鍵碼,而不是Keys枚舉類型值。用于獲得所按下鍵的數(shù)字表示
(8).Modifiers屬性:以Keys枚舉值返回所按下的修改鍵,僅判斷修改鍵的信息
3.如何在C#程序中定義這些事件:
C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。這二個(gè)Delegate都被封裝在命名空"Syetem.Windows.Froms"中。為"KeyDown"、"KeyUp"的事件提供數(shù)據(jù)的類是"KeyEventArgs"。而為"KeyPress"事件提供數(shù)據(jù)的類是"KeyPressEventArgs"。同樣這二者也被封裝在命名空間"Syetem.Windows.Froms"中。
在C#程序定義"KeyDown"、"KeyUp"事件的語法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyEventHandler("事件名稱");
下面是程序中具體實(shí)現(xiàn)代碼:
button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);
下面是響應(yīng)上面事件的基本結(jié)構(gòu)。
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}
在C#程序定義"KeyPress"事件的語法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名稱");
下面是程序中具體實(shí)現(xiàn)代碼:
button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);
在完成了事件的定義以后,就要在程序中加入響應(yīng)此事件的代碼,否則程序編譯的時(shí)候會(huì)報(bào)錯(cuò)。下面是響應(yīng)上面事件的基本結(jié)構(gòu)。
private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}?
注釋:程序中出現(xiàn)的"button1"是定義的一個(gè)按鈕組件。
例子:
?? private void Form1_KeyUp(object sender, KeyEventArgs e)
?? {
??? MessageBox.Show("您所按動(dòng)的鍵是:"+e.KeyCode.ToString());
?? }
url:http://greatverve.cnblogs.com/archive/2012/05/15/KeyCode.html
總結(jié)
- 上一篇: Graph cut [转]
- 下一篇: 网站安全编程 黑客入侵 脚本黑客 高级语