C#中處理和鍵盤相關的事件

來源:互聯網
上載者:User

在C#中和鍵盤相關的事件相對比較少,大致就三種:"KeyDown"、"KeyUp"和"KeyPress"。

(1).如何在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"是定義的一個按鈕組件。

(

2).和鍵盤相關事件中的典型問題處理辦法:

和鍵盤相關的典型問題無非就是判定到底是哪個按鍵被按動。通過上面的三個事件都可以完成。並且在"KeyEventArgs"類中通過了一個屬 性"KeyCode",可以用他來讀取當前按鍵。所以就在"KeyUp"或者"KeyDown"事件中處理這個問題。根據上面這些知識,可以得到用C#編 寫讀取讀取按鍵的程式碼,下面就是此代碼(key.cs)和此代碼運行後的介面: 

圖02:用C#讀取鍵盤按鍵的程式運行介面

key.cs的代碼如下:

 

 

代碼

 1 using System ;
2  using System.Drawing ;
3  using System.Collections ;
4  using System.ComponentModel ;
5  using System.Windows.Forms ;
6  using System.Data ;
7  public class Form1 : Form
8 {
9 private System.ComponentModel.Container components = null ;
10
11 public Form1 ( )
12 {
13 file://初始化表單中的各個組件
14 InitializeComponent ( ) ;
15 }
16 protected override void Dispose ( bool disposing )
17 {
18 file://清除程式中使用過的資源
19 if ( disposing )
20 {
21 if ( components != null )
22 {
23 components.Dispose ( ) ;
24 }
25 }
26 base.Dispose ( disposing ) ;
27 }
28 private void InitializeComponent ( )
29 {
30 this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
31 this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
32 this.Name = "Form1" ;
33 this.Text = "C#處理鍵盤事件!" ;
34 file://為按鍵的按動定義一個事件處理過程"Form1_KeyUp"
35 this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ;
36
37 }
38 static void Main ( )
39 {
40 Application.Run ( new Form1 ( ) ) ;
41 }
42 file://顯示你所按動的按鍵名稱
43 private void Form1_KeyUp ( object sender , KeyEventArgs e )
44 {
45 MessageBox.Show ( e.KeyCode.ToString ( ) , "您所按動的健為:" ) ;
46
47 }
48 }
49
50
51 上面都是網上找的,我看了之後,自己試了很多次,按鍵沒反應......
52 後來才在CSDN上找到,原來 要先把對應的form 的KeyPreview屬性設為true
53 暈..........................
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 C# codethis.KeyPreview=true;this.KeyDown+=newKeyEventHandler(frmNewBook_KeyDown);
74
75 }voidfrmNewBook_KeyDown(objectsender, KeyEventArgs e)
76 {switch(e.KeyData)
77 {caseKeys.F4:
78 Console.WriteLine("樓主給點分吧");break;//.........}
79 }
80
81

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.