共用方式為


詳述:共用事件處理常式

更新:2007 年 11 月

在本課程中,您將學習如何建立共用的事件處理常式,以便處理多個控制項的事件。

在上一個課程中:讓程式回應使用者:建立事件處理常式,您學會如何撰寫程式碼以回應 Button 控制項的 MouseEnterMouseLeave 事件。可是,如果您有兩個以上的 Button 控制項而想要讓它們全部都顯示相同的訊息時,該怎麼辦?雖然您可以為各個控制項撰寫事件處理常式中的程式碼,不過幸虧還有更簡便的方法。

如果您仔細查看 MouseEnter 事件的事件處理常式方法,就會注意到 Method 宣告 (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) 中包含 Handles 子句 (Handles Button1.MouseEnter)。果然,Handles 關鍵字會告訴事件處理常式,應該要處理哪些事件。

若要在多個控制項之間共用事件處理常式,只要加入您要處理的其他控制項名稱和事件名稱就可以了。然後事件處理常式就會在這些控制項的任何一個發生事件時收到通知。例如,如果您有兩個 Button 控制項,而這兩個控制項都要使用相同的事件處理常式,則 Handles 子句大概就會像下面這樣。

Handles Button1.MouseEnter, Button2.MouseEnter.

現在您已經有單一方法,可處理這兩個控制項的 MouseEnter 事件,但是事件處理常式要怎麼知道是哪個控制項引發事件?如果再仔細看 Method 宣告,就會注意到子句 ByVal sender As Object。其中的 Sender 關鍵字會告訴事件處理常式,哪個物件 (在本範例中即哪個控制項) 引發了事件。

試試看!

若要共用事件處理常式

  1. 開啟您在上一個課程中所建立的 EventHandler 專案。如果您並未儲存該專案,就必須先回到上一個課程:讓程式回應使用者:建立事件處理常式,並完成該課程中的程序。

  2. 在 [方案總管] 中,選取 [Form1.vb],然後在 [檢視] 功能表中選擇 [設計工具]。

  3. 從 [工具箱] 將另一個 Button 控制項拖曳到表單上。

  4. 在 [屬性] 視窗中,將 AutoSize 屬性設定為 True。

  5. 在 [檢視] 功能表上,選擇 [程式碼] 以開啟 [程式碼編輯器]。

  6. 在 Button1_MouseEnter 方法宣告中 (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter),將 Handles 子句變更為 Handles Button1.MouseEnter, Button2.MouseEnter。

  7. 在事件宣告的主體中,以下列程式碼取代原有程式碼。

    If sender.Equals(Button1) Then
      Button1.Text = "The mouse has entered Button1"
    Else
      Button2.Text = "The mouse has entered Button2"
    End If
    

    這段程式碼會查看,傳送者是否為 [Button1]:如果是,則更新 [Button1] 的 Text 屬性;如果不是,則更新 [Button2] 的 Text 屬性。

  8. 在 Button1_MouseLeave 方法宣告中,將 Handles 子句變更如下。

    Handles Button1.MouseLeave, Button2.MouseLeave.

  9. 在事件宣告的主體中,以下列程式碼取代原有程式碼。

    sender.Text = "The mouse has left"
    

    在本範例中,程式碼會將傳送者 ([Button1] 或 [Button2]) 的 Text 屬性設定為相同的字串。

  10. 請按 F5 執行您的應用程式。

    現在,當滑鼠指標通過按鈕之上時,文字就變更為 The mouse has entered 並附有按鈕的名稱,但是當滑鼠指標不再位於按鈕之上時,文字就會變回 The mouse has left。

    請嘗試加入更多控制項至表單上,然後修改 Handles 子句,將控制項都包含在內,甚至不是同一類型的控制項也可以!

後續步驟

在本課程中,您學會如何在多個控制項之間共用單一事件處理常式。在下一個課程中,您將學習如何使用兩個新的控制項類型 (CheckBoxRadioButton 控制項),提供選項給使用者。

下一個課程:取得使用者選項:使用核取方塊和選項按鈕

請參閱

工作

讓程式回應使用者:建立事件處理常式