close

滑鼠鍵盤事件

※ 註:以下範例皆在Windows Form 應用程式中執行,且表單中已有一個TextBox控制項,名為tetxBox1,是用來顯示輸出訊息的。且,程式碼都寫在

public partial class Form1 : Form{} 的括號{} 之中,也就是說,格式是這樣的:

public partial class Form1 : Form

{

    範例程式碼

}

 

一、簡介

1. 在一個控制項上發生某事件後,程式可以對此事件產生「回應」。要設定一個控制項對事件的回應,可以這麼做:

在表單上點選該控制項à按下屬性面板上的事件按鈕image

à對著事件名稱雙擊滑鼠左鍵à即會在程式碼中產生一個函式,如:

private void 控制項名稱_事件名稱(object sender, 事件參數類別 e)

{

}

在這個函式中就可以撰寫此回應的程式碼。

其中,e事件參數類別物件名稱,可自訂。

 

2. 每種控制項所能夠觸發的事件不盡相同。但大概來說,所有控制項以及表單都能觸發本章所述的「滑鼠事件」與「鍵盤事件」,因此,「滑鼠事件」與「鍵盤事件」也被稱為「通用事件」。相對的,另有一詞為「專用事件」,指的是只有某控制項或者表單才能觸發、而其他控制相不能觸發的事件。

 

 

二、各類事件詳述

1. 滑鼠事件:

滑鼠事件,即是使用者操縱滑鼠將游標置於控制項、對控制項進行動做時,所觸發的事件。常見的滑鼠事件有:

 

事件名稱

觸發此事件的方式

Click

在控制項上按一次滑鼠按鍵

DoubleClick

在控制項上連按二次滑鼠按鍵

MouseClick

在控制項上按一次滑鼠按鍵

MouseDoubleClick

在控制項上連按二次滑鼠按鍵

MouseEnter

把游標移到到控制項之上

MouseLeave

把游標移到到控制項之上然後移開

MouseMove

把游標移到到控制項之上然後持續移動

MouseHover

把游標移到到控制項之上然後停止移動

※ 註二:在控制項上按一次滑鼠按鍵,會依序觸發MouseDownClickMouseUp三個事件。※ 註一:上述的「滑鼠按鍵」,可以是「滑鼠左鍵」、「滑鼠右鍵」、「滑鼠中鍵」。

※ 註三:在控制項上連按二次滑鼠按鍵,會依序觸發MouseDownClickMouseUpMouseDownDoubleClickMouseUp六個事件。

(1) Click事件、DoubleClick事件、MouseEnter事件、MouseLeave事件、MouseHover事件:

Click事件的事件名稱ClickDoubleClick事件的事件名稱DoubleClick MouseEnter事件的事件名稱MouseEnterMouseLeave事件的事件名稱MouseLeaveMouseHover事件的事件名稱MouseHover,他們的事件參數類別都是EventArgs

EventArgs類別並不具有類別成員。

(2) MouseClick事件、MouseDoubleClick事件、MouseDown事件、MouseUp事件、MouseMove事件:

MouseClick事件的事件名稱MouseClickMouseDoubleClick事件的事件名稱MouseDoubleClickMouseDown事件的事件名稱MouseDownMouseUp事件的事件名稱MouseUpMouseMove事件的事件名稱MouseMove,他們的事件參數類別都是MouseEventArgs

(2-1) MouseEventArgs類別物件有幾個常用的成員,如下:

MouseEventArgs類別物件名稱.Button:表示觸發該事件的滑鼠按鍵。其值有三種可能性,MouseButtons.Left代表滑鼠左鍵,MouseButtons.Middle代表滑鼠中鍵,MouseButtons.Right代表滑鼠右鍵。

MouseEventArgs類別物件名稱.X:一個int,表示觸發該事件的游標的X座標值(以該控制項的座標值為座標原點)。

MouseEventArgs類別物件名稱.Y:一個int,表示觸發該事件的游標的Y座標值(以該控制項的座標值為座標原點)。

() 註:ClickDoubleClick事件適用於單純按下控制項,而不需要用到事件的細部資訊(如游標的座標)時。MouseClickMouseDoubleClick事件則適用於需要用到細部資訊時。

(3) 使用範例:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

    textBox1.Text = e.X.ToString() + "," + e.Y.ToString();

}

則當滑鼠在pictureBox1上按下按鍵時,會顯示出游標的X座標、Y座標值(以該控制項的座標值為座標原點)

 

2. 鍵盤事件:

鍵盤事件,即是使用者按下鍵盤按鈕所觸發的事件。常見的鍵盤事件有:

事件名稱

觸發此事件的方式

KeyPress

在控制項上按下「具有ASCII碼的鍵盤按鈕

KeyDown

在控制項上按下任何鍵盤按鈕

KeyUp

在控制項上按下任何鍵盤按鈕後放掉

※ 註一:欲知上述的「具有ASCII碼的鍵盤按鈕」其與對應的ASCII碼,請參看本資料夾的參考資料。鍵盤上並非每一個鍵都有相對應的ASCII碼。

※ 註二:在控制項上按下「具有ASCII碼的鍵盤按鈕,事實上會依序觸發KeyDownKeyPressKeyUp三個事件。

(1) KeyPress事件:

事件名稱KeyPress事件參數類別KeyPressEventArgs

(1-1) KeyPressEventArgs類別的常用成員有:

KeyPressEventArgs類別物件名稱.KeyChar:一個char。乃是這個按鍵按下去之後會產生的字元。用Convert.ToInt32(字元),即回傳該字元的ASCII碼。

(2) KeyDown事件、KeyUp事件:

KeyDown事件的事件名稱KeyDownKeyUp事件的事件名稱KeyUp,兩者的事件參數類別都是KeyEventArgs

(2-1) KeyEventArgs類別的常用成員有:

KeyEventArgs類別物件名稱.Alt:一個bool。若該按鍵是<Alt>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.Control:一個bool。若該按鍵是<Control>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.Shift:一個bool。若該按鍵是<Shift>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.KeyValue:一個int。代表該按鍵的按鍵編碼。關於鍵盤按鍵與按鍵編碼的對照,請看本資料夾中的參考資料。

(3) 範例:

private void textBox1_KeyDown(object sender, KeyEventArgs e)

{

    if (e.KeyValue == 37)  // KeyValue37代表方向鍵的左鍵

    { textBox1.Left--; }

    if (e.KeyValue == 38)  // KeyValue38代表方向鍵的上鍵

    { textBox1.Top--; }

    if (e.KeyValue == 39)  // KeyValue39代表方向鍵的右鍵

    { textBox1.Left++; }

    if (e.KeyValue == 40)  // KeyValue40代表方向鍵的下鍵

    { textBox1.Top++; }

}

在此範例中,於textBox1被選取時按下方向鍵,則textBox1會依照所指示的方向來移動。

 

 

上一篇:檔案對話方塊(openfiledialog savefiledialog)

下一篇:參考資料 鍵盤按鍵名稱與按鍵編碼的對應表

按此前往C#完整教學目錄

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()