西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → C#中簡單的鍵盤和鼠標(biāo)事件處理完整教程

C#中簡單的鍵盤和鼠標(biāo)事件處理完整教程

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/11/19 13:24:43字體大。A-A+

作者:佚名點(diǎn)擊:524次評論:0次標(biāo)簽: 鼠標(biāo) 鍵盤 事件處理

  • 類型:鼠標(biāo)鍵盤大。82KB語言:中文 評分:3.3
  • 標(biāo)簽:
立即下載
在程序運(yùn)行中,產(chǎn)生事件的主體有很多,其中尤其以Keyboard和Mouse為最多。本文就來探討一下在C#中和這二個主體相關(guān)的事件的處理過程。

   一.本文介紹的程序設(shè)計和運(yùn)行的軟件環(huán)境:

   (1).Windows xp
   (2)..Net FrameWork  2.0

   二.C#中處理鼠標(biāo)相關(guān)的事件:

   鼠標(biāo)相關(guān)的事件大致有六種,分別是 :

    "MouseHover"、"MouseLeave"、"MouseEnter"、"MouseMove"、"MouseDown"和"MouseUp"。

   (1).如何在C#程序中定義這些事件:

   在C#中是通過不同的Delegate來描述上述事件,其中描述"MouseHover"、"MouseLeave"、"MouseEnter"事件的Delegate是"EventHandler",而描述后面的三個事件的Delegate是"MouseEventHandler"來描述。這二個Delegate分別被封裝在不同的命名空間,其中"EventHandler"被封裝在"System"命名空間;"MouseEventHandler"被封裝在"Syetem.Windows.Froms"命名空間中的。在為"MouseHover"、"MouseLeave"、"MouseEnter"事件通過數(shù)據(jù)的類是"EventArgs",他也被封裝在"System"命名空間中;而為后面的三個事件提供數(shù)據(jù)的類是"MouseEventArgs",他卻被封裝在"Syetem.Windows.Froms"命名空間。以上這些就決定了在C#中定義這些事件和響應(yīng)這些事件有著不同的處理辦法。下面就來介紹這些不同點(diǎn)。


   對于上述的前三個事件,是用以下語法來定義的:

    "組件名稱"."事件名稱"+= new System.EventHandler("事件名稱");

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

    button1.MouseLeave += new Syetem.EvenHandler(button1_MLeave);

   在完成了事件的定義以后,就要在程序中加入響應(yīng)此事件的代碼,否則程序編譯的時候會報錯。下面是響應(yīng)上面事件的基本結(jié)構(gòu)。

private void button1_MLeave ( object sender , System.EventArgs e )
{
此處加入響應(yīng)此事件的代碼
}



   定義"MouseMove"、"MouseDown"和"MouseUp"事件的語法和前面介紹的三個事件大致相同,具體如下:

    "組件名稱"."事件名稱"+= new System.Windows.Forms. MouseEventHandler("事件名稱");

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

button1.MouseMove += new System.Windows.Forms.MouseEventHandler(button1_MMove);



   下面是響應(yīng)上面事件的基本結(jié)構(gòu):

private void button1_MMove ( object sender , System.Windows.Forms. MouseEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}



   注釋:在上述程序中的"button1"是定義的一個按鈕組件。

2).鼠標(biāo)相關(guān)事件中的典型問題處理辦法:

   在掌握了C#中定義和鼠標(biāo)相關(guān)的事件,我們就來探討一下和鼠標(biāo)相關(guān)事件的典型問題。其一是讀取鼠標(biāo)的當(dāng)前位置;其二是判定到底是那個鼠標(biāo)按鍵按動。

   判定鼠標(biāo)的位置可以通過事件"MouseMove"來處理,在"MouseEventArgs"類中提供了二個屬性"X"和"Y",來判定當(dāng)前鼠標(biāo)縱坐標(biāo)和橫坐標(biāo)。而判定鼠標(biāo)按鍵的按動情況,可以通過事件"MouseDown"來處理,并且在"MouseEventArgs"類中也提供了一個屬性"Button"來判定鼠標(biāo)按鍵情況。根據(jù)這些知識,可以得到用C#編寫的讀取鼠標(biāo)當(dāng)前位置和判定鼠標(biāo)按鍵情況的程序代碼。下面就是此代碼(mouse.cs)和此代碼編譯后運(yùn)行界面:


圖01:用C#讀取鼠標(biāo)位置和鼠標(biāo)按鍵的程序運(yùn)行界面



   mouse.cs的源程序代碼如下:

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://初始化窗體中的各個組件
InitializeComponent ( ) ;
}
file://清除程序中使用過的資源
protected override void Dispose ( bool disposing )
{
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#處理鼠標(biāo)按動事件!" ;
file://為鼠標(biāo)按動定義一個事件處理過程"Form1_MouseDown"
this.MouseDown += new MouseEventHandler ( Form1_MouseDown ) ;
file://為鼠標(biāo)移動定義一個事件處理過程"Form1_MouseMove"
this.MouseMove += new MouseEventHandler ( Form1_OnMouseMove ) ;

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private void Form1_OnMouseMove ( object sender , MouseEventArgs e )
{
this.Text = "當(dāng)前鼠標(biāo)的位置為:( " + e.X + " , " + e.Y + ")" ;
}

private void Form1_MouseDown ( object sender , MouseEventArgs e )
{
file://響應(yīng)鼠標(biāo)的不同按鍵
if ( e.Button == MouseButtons.Left )
{
MessageBox.Show ( "按動鼠標(biāo)左鍵!" ) ;
}
if ( e.Button == MouseButtons.Middle )
{
MessageBox.Show ( "按動鼠標(biāo)中鍵!") ;
}
if ( e.Button == MouseButtons.Right )
{
MessageBox.Show ( "按動鼠標(biāo)右鍵!") ;
}
}
}


三.C#中處理和鍵盤相關(guān)的事件:

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

   (1).如何在C#程序中定義這些事件:
 
   C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。這二個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)此事件的代碼,否則程序編譯的時候會報錯。下面是響應(yīng)上面事件的基本結(jié)構(gòu)。

private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此處加入響應(yīng)此事件的代碼
}


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

(

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

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

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://初始化窗體中的各個組件
InitializeComponent ( ) ;
}
protected override void Dispose ( bool disposing )
{
file://清除程序中使用過的資源
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://為按鍵的按動定義一個事件處理過程"Form1_KeyUp"
this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ;

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

}
}
   四.總結(jié):

   本文介紹了在C#中如何定義和鼠標(biāo)和鍵盤相關(guān)的事件和在這些事件中一些典型問題的處理辦法。雖然這些知識最為基本,但也最為重要,因為在程序設(shè)計中,這些問題和我們打交道的機(jī)會最多。當(dāng)然和鼠標(biāo)和鍵盤相關(guān)的事件和問題還有許多,可以參照根據(jù)上面.
    圣誕節(jié)素材
    (157)圣誕節(jié)素材
    圣誕節(jié)雖然是一個西方節(jié)日,但近幾年越來越多的有了慶祝圣誕節(jié)的習(xí)慣。圣誕節(jié)的時候,有時候會需要制作一些關(guān)于圣誕節(jié)的或者其他類型的電子宣傳資料,但又苦于尋找。,小編在這里為大家搜集整理了一些圣誕節(jié)主題素材,非常的齊全。有需要的朋友們可以過來看看哦,走過路過千萬不要錯過...更多>>

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)