国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

深入分析C#中處理和鍵盤相關(guān)事件的詳解

2020-01-24 03:16:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在C#中和鍵盤相關(guān)的事件相對(duì)比較少,大致就三種:"KeyDown"、"KeyUp"和"KeyPress"。
(1).如何在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"事件的語(yǔ)法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyEventHandler("事件名稱");
下面是程序中具體實(shí)現(xiàn)代碼:
復(fù)制代碼 代碼如下:

button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);

下面是響應(yīng)上面事件的基本結(jié)構(gòu)。
復(fù)制代碼 代碼如下:

private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}
在C#程序定義"KeyPress"事件的語(yǔ)法如下:
"組件名稱"."事件名稱"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名稱");

下面是程序中具體實(shí)現(xiàn)代碼:
復(fù)制代碼 代碼如下:

button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);

在完成了事件的定義以后,就要在程序中加入響應(yīng)此事件的代碼,否則程序編譯的時(shí)候會(huì)報(bào)錯(cuò)。下面是響應(yīng)上面事件的基本結(jié)構(gòu)。
復(fù)制代碼 代碼如下:

private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}
注釋:程序中出現(xiàn)的"button1"是定義的一個(gè)按鈕組件。
(

(2).和鍵盤相關(guān)事件中的典型問(wèn)題處理辦法:
和鍵盤相關(guān)的典型問(wèn)題無(wú)非就是判定到底是哪個(gè)按鍵被按動(dòng)。通過(guò)上面的三個(gè)事件都可以完成。并且在"KeyEventArgs"類中通過(guò)了一個(gè)屬 性"KeyCode",可以用他來(lái)讀取當(dāng)前按鍵。所以就在"KeyUp"或者"KeyDown"事件中處理這個(gè)問(wèn)題。根據(jù)上面這些知識(shí),可以得到用C#編 寫讀取讀取按鍵的程序代碼,下面就是此代碼(key.cs)和此代碼運(yùn)行后的界面: 
圖02:用C#讀取鍵盤按鍵的程序運(yùn)行界面
key.cs的代碼如下:
復(fù)制代碼 代碼如下:

代碼
 using System ;
  using System.Drawing ;
  using System.Collections ;
  using System.ComponentModel ;
  using System.Windows.Forms ;
  using System.Data ;
  public class Form1 : Form
 {
 private System.ComponentModel.Container components = null ;

 public Form1 ( )
 {
 file://初始化窗體中的各個(gè)組件
 InitializeComponent ( ) ;
 }
 protected override void Dispose ( bool disposing )
 {
 file://清除程序中使用過(guò)的資源
 if ( disposing )
 {
 if ( components != null )
 {
 components.Dispose ( ) ;
 }
 }
 base.Dispose ( disposing ) ;
 }
 private void InitializeComponent ( )
 {
 this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
 this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
 this.Name = "Form1" ;
 this.Text = "C#處理鍵盤事件!" ;
 file://為按鍵的按動(dòng)定義一個(gè)事件處理過(guò)程"Form1_KeyUp"
 this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ;

 }
 static void Main ( )
 {
 Application.Run ( new Form1 ( ) ) ;
 }
 file://顯示你所按動(dòng)的按鍵名稱
 private void Form1_KeyUp ( object sender , KeyEventArgs e )
 {
 MessageBox.Show ( e.KeyCode.ToString ( ) , "您所按動(dòng)的健為:" ) ;

 }
 }

 上面都是網(wǎng)上找的,我看了之后,自己試了很多次,按鍵沒(méi)反應(yīng)......
 后來(lái)才在書上找到,原來(lái) 要先把對(duì)應(yīng)的form 的KeyPreview屬性設(shè)為true
 C# codethis.KeyPreview=true;this.KeyDown+=newKeyEventHandler(frmNewBook_KeyDown);

         }voidfrmNewBook_KeyDown(objectsender, KeyEventArgs e)
         {switch(e.KeyData)
             {caseKeys.F4:
                     Console.WriteLine("樓主給點(diǎn)分吧");break;//.........}
         }

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 特克斯县| 东源县| 济源市| 宜丰县| 大关县| 江山市| 西乌珠穆沁旗| 遂宁市| 柘城县| 高台县| 朝阳县| 永胜县| 沽源县| 富锦市| 秦皇岛市| 阳东县| 西盟| 栖霞市| 东海县| 德令哈市| 双牌县| 贡嘎县| 浮山县| 广平县| 额济纳旗| 凯里市| 洛扎县| 盘锦市| 景宁| 江油市| 靖宇县| 沙湾县| 长沙市| 宜君县| 衡南县| 灵武市| 西丰县| 沧源| 兴山县| 肃宁县| 台东市|