C#鍵盤事件處理


如果你希望用戶按F1彈出chm幫助,代碼如下:
private  void FrmMain_Load( object sender, EventArgs e)
{
     this.KeyPreview =  true; // 獲取或設置一個值,該值指示在將鍵事件傳遞到具有焦點的控件前,窗體是否將接收此鍵事件。
}

private  void FrmMain_KeyUp( object sender, KeyEventArgs e)
{
     if (Keys.F1 == e.KeyCode)

    {
        //MessageBox.Show("您所按動的鍵是:" + e.KeyCode.ToString());
        Help.ShowHelp(this,@"C:\Users\HongYe\Desktop\RevitAPI.chm");
    }
}

鍵盤事件是在用戶按下鍵盤上的一個鍵的時候發生的,可分為兩類。第一類是KeyPress事件,當按下的鍵表示的是一個ASCII字符的時候就會觸發這類事件,可通過他的KeyPressEventArgs類型參數的屬性KeyChar來確定按下的鍵的ASCII。使用KeyPress時間無法判斷是否按下了修改鍵(Shift,AltCtrl),為了判斷這些動作,就要處理KeyUp KeyDown事件,這些時間組成了第二類事件。該類事件有一個KeyEventsArgs類型參數,通過該參數可以測試是否按下了一些修改鍵。

1.       KeyPressEventArgs類的主屬性(KeyPress事件的一個參數類型)
1.Handle屬性:用來獲取或設置一個值,該值指示是否處理過KeyPress事件。
2.KeyChar屬性:用來獲取按下的鍵對應的字符,通常是該鍵的ASCII瑪(返回的是鍵盤的值,如按‘K‘返回就是K)。

2KeyEventArgs類的主屬性(KeyUpKeyDown事件的一個參數)
1.Alt屬性:用來獲取一個值,該值提示是否曾按下了Alt
2.Control屬性:用來獲取一個值,該值提示是否曾按下了Crtl
3.Shift屬性:用來獲取一個值,該值提示是否曾按下了Shift
4.Handle屬性:用來獲取一個值,該值提示是否曾處理過此事件
5.KeyCode屬性:以Keys枚舉值返回鍵盤鍵的鍵碼,該屬性不包含修改鍵信息,用於測試指定的鍵盤鍵
6.KeyData屬性:以Keys枚舉值返回鍵盤鍵的鍵碼,該屬性包含修改鍵信息,用於判斷按下鍵的所有信息(可返回組合鍵)
7.KeyValue屬性:以整數形式返回鍵碼,而不是Keys枚舉類型值。用於獲得所按下鍵的數字表示
8.Modifiers屬性:以Keys枚舉值返回所按下的修改鍵,僅判斷修改鍵的信息

3.如何在C#程序中定義這些事件:
  C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。這二個Delegate都被封裝在命名空"Syetem.Windows.Froms"中。為"KeyDown"、"KeyUp"的事件提供數據的類是"KeyEventArgs"。而為"KeyPress"事件提供數據的類是"KeyPressEventArgs"。同樣這二者也被封裝在命名空間"Syetem.Windows.Froms"中。

  在C#程序定義"KeyDown"、"KeyUp"事件的語法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyEventHandler("事件名稱");

  下面是程序中具體實現代碼:
button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);

  下面是響應上面事件的基本結構。
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
此處加入響應此事件的代碼
}

  在C#程序定義"KeyPress"事件的語法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名稱");

  下面是程序中具體實現代碼:
button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);

  在完成了事件的定義以后,就要在程序中加入響應此事件的代碼,否則程序編譯的時候會報錯。下面是響應上面事件的基本結構。
private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此處加入響應此事件的代碼

注釋:程序中出現的"button1"是定義的一個按鈕組件。

例子:
   private void Form1_KeyUp(object sender, KeyEventArgs e)
   {
    MessageBox.Show("您所按動的鍵是:"+e.KeyCode.ToString());
   }
url:http://greatverve.cnblogs.com/archive/2012/05/15/KeyCode.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM