日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)C#.NET → C#中簡(jiǎn)單的鍵盤(pán)和鼠標(biāo)事件處理完整教程

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

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

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

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

         一.本文介紹的程序設(shè)計(jì)和運(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#中是通過(guò)不同的Delegate來(lái)描述上述事件,其中描述"MouseHover"、"MouseLeave"、"MouseEnter"事件的Delegate是"EventHandler",而描述后面的三個(gè)事件的Delegate是"MouseEventHandler"來(lái)描述。這二個(gè)Delegate分別被封裝在不同的命名空間,其中"EventHandler"被封裝在"System"命名空間;"MouseEventHandler"被封裝在"Syetem.Windows.Froms"命名空間中的。在為"MouseHover"、"MouseLeave"、"MouseEnter"事件通過(guò)數(shù)據(jù)的類(lèi)是"EventArgs",他也被封裝在"System"命名空間中;而為后面的三個(gè)事件提供數(shù)據(jù)的類(lèi)是"MouseEventArgs",他卻被封裝在"Syetem.Windows.Froms"命名空間。以上這些就決定了在C#中定義這些事件和響應(yīng)這些事件有著不同的處理辦法。下面就來(lái)介紹這些不同點(diǎn)。


         對(duì)于上述的前三個(gè)事件,是用以下語(yǔ)法來(lái)定義的:

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

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

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

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

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



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

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

         下面是程序中具體實(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)此事件的代碼
      }



         注釋?zhuān)涸谏鲜龀绦蛑械?button1"是定義的一個(gè)按鈕組件。

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

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

         判定鼠標(biāo)的位置可以通過(guò)事件"MouseMove"來(lái)處理,在"MouseEventArgs"類(lèi)中提供了二個(gè)屬性"X"和"Y",來(lái)判定當(dāng)前鼠標(biāo)縱坐標(biāo)和橫坐標(biāo)。而判定鼠標(biāo)按鍵的按動(dòng)情況,可以通過(guò)事件"MouseDown"來(lái)處理,并且在"MouseEventArgs"類(lèi)中也提供了一個(gè)屬性"Button"來(lái)判定鼠標(biāo)按鍵情況。根據(jù)這些知識(shí),可以得到用C#編寫(xiě)的讀取鼠標(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://初始化窗體中的各個(gè)組件
      InitializeComponent ( ) ;
      }
      file://清除程序中使用過(guò)的資源
      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)按動(dòng)事件!" ;
      file://為鼠標(biāo)按動(dòng)定義一個(gè)事件處理過(guò)程"Form1_MouseDown"
      this.MouseDown += new MouseEventHandler ( Form1_MouseDown ) ;
      file://為鼠標(biāo)移動(dòng)定義一個(gè)事件處理過(guò)程"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 ( "按動(dòng)鼠標(biāo)左鍵!" ) ;
      }
      if ( e.Button == MouseButtons.Middle )
      {
      MessageBox.Show ( "按動(dòng)鼠標(biāo)中鍵!") ;
      }
      if ( e.Button == MouseButtons.Right )
      {
      MessageBox.Show ( "按動(dòng)鼠標(biāo)右鍵!") ;
      }
      }
      }


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

         在C#中和鍵盤(pán)相關(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ù)的類(lèi)是"KeyEventArgs"。而為"KeyPress"事件提供數(shù)據(jù)的類(lèi)是"KeyPressEventArgs"。同樣這二者也被封裝在命名空間"Syetem.Windows.Froms"中。

         在C#程序定義"KeyDown"、"KeyUp"事件的語(yǔ)法如下:

          "組件名稱(chēng)"."事件名稱(chēng)"+= new Syetem.Windows.Froms. KeyEventHandler("事件名稱(chēng)");

         下面是程序中具體實(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"事件的語(yǔ)法如下:

          "組件名稱(chēng)"."事件名稱(chēng)"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名稱(chēng)");

         下面是程序中具體實(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)此事件的代碼
      }


         注釋?zhuān)撼绦蛑谐霈F(xiàn)的"button1"是定義的一個(gè)按鈕組件。

      (

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

         和鍵盤(pán)相關(guān)的典型問(wèn)題無(wú)非就是判定到底是哪個(gè)按鍵被按動(dòng)。通過(guò)上面的三個(gè)事件都可以完成。并且在"KeyEventArgs"類(lèi)中通過(guò)了一個(gè)屬性"KeyCode",可以用他來(lái)讀取當(dāng)前按鍵。所以就在"KeyUp"或者"KeyDown"事件中處理這個(gè)問(wèn)題。根據(jù)上面這些知識(shí),可以得到用C#編寫(xiě)讀取讀取按鍵的程序代碼,下面就是此代碼(key.cs)和此代碼運(yùn)行后的界面:
      圖02:用C#讀取鍵盤(pán)按鍵的程序運(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://初始化窗體中的各個(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#處理鍵盤(pán)事件!" ;
      file://為按鍵的按動(dòng)定義一個(gè)事件處理過(guò)程"Form1_KeyUp"
      this.KeyUp += new KeyEventHandler ( this.Form1_KeyUp ) ;

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

      }
      }
         四.總結(jié):

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

          12-13 / 73.3M

          推薦理由:2013年馬上就要來(lái)臨了哦,西西恭賀大家蛇年吉祥。特給友友們準(zhǔn)備了設(shè)計(jì)者們需要的新年字體,圣誕節(jié)字體,素
        • 圣誕節(jié)素材合集(圣誕大禮包)60P 西

          05-15 / 178.2M

          推薦理由:西西從網(wǎng)上整理的2013圣誕節(jié)矢量素材,公司美工、平面處理的朋友們一定很需要哦。 圣誕節(jié)素材合集├─2010
        • 圣誕節(jié)背景素材合集

          12-21 / 230.3M

          推薦理由:圣誕節(jié)馬上就要到了,很多商家店鋪早就開(kāi)始了做圣誕活動(dòng)的廣告,網(wǎng)游里也是很多的圣誕活動(dòng)哦。 圣誕節(jié)(Chr
        • 卡通圣誕節(jié)禮物盒子卡片矢量素材

          05-15 / 5.1M

          推薦理由:【文件描述】?jī)?nèi)含1個(gè)ai和1個(gè)eps文件,有jpg預(yù)覽圖?靵(lái)用這個(gè)可愛(ài)的素材為你的圣誕節(jié)卡片做好準(zhǔn)備吧!舅
        • 圣誕節(jié)PSD素材模板西西整理

          12-13 / 227.7M

          推薦理由:馬上就是圣誕節(jié)了,很多學(xué)校及公司需要用到一些圣誕節(jié)的PSD素材模板,西西小編在這里給大家準(zhǔn)備了一些PSD的
        • 圣誕節(jié)裝飾元素矢量素材

          10-27 / 5.5M

          推薦理由:圣誕節(jié)裝飾元素矢量素材經(jīng)過(guò)我們檢查,是無(wú)病毒軟件,請(qǐng)放心使用。這是一款以圣誕節(jié)為主題的裝飾元素矢量素

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門(mén)評(píng)論

        最新評(píng)論

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

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