如何處理控制項事件 (Windows Forms .NET)
控制項的事件 (以及表單的事件) 通常會透過適用於 Windows Forms 的 Visual Studio 視覺化設計工具來設定。 透過視覺化設計工具設定事件稱為在設計階段處理事件。 您也可以在程式碼中動態處理事件,稱為在執行階段處理事件。 在執行階段建立的事件可讓您根據應用程式目前執行的動作動態連結事件處理常式。
處理事件 - 設計工具
在 Visual Studio 中,使用視覺化設計工具來管理控制項事件的處理常式。 視覺化設計工具會產生處理常式程式碼,並將它新增至事件。
設定處理常式
使用 [屬性] 窗格來新增或設定事件的處理常式:
開啟表單的視覺化設計工具,其中包含要變更的控制項。
選取 控制項。
按下事件按鈕 (),將 [屬性] 窗格模式變更為 [事件]
。
尋找您要新增處理常式的事件,例如 [Click] 事件:
執行下列其中一項動作:
按兩下事件來產生新的處理常式,如果未指派任何處理常式,則會是空白的。 如果不是空白,此動作會開啟表單的程式碼,並瀏覽至現有的處理常式。
使用選取方塊 (
) 來選擇現有的處理常式。
選取方塊會列出具有事件處理常式相容方法簽章的所有方法。
清除處理常式
若要移除事件處理常式,不能只刪除表單程式碼後置檔案中的處理常式程式碼,該處理常式程式碼仍由事件參考。 使用 [屬性] 窗格移除事件的處理常式:
開啟表單的視覺化設計工具,其中包含要變更的控制項。
選取 控制項。
按下事件按鈕 (),將 [屬性] 窗格模式變更為 [事件]
。
尋找包含您要移除之處理常式的事件,例如 [Click] 事件:
以滑鼠右鍵按一下事件,然後選擇 [重設]。
處理事件 - 程式碼
您通常會透過視覺化設計工具,在設計階段將事件處理常式新增至控制項。 不過,您可以在執行階段建立控制項,這需要在程式碼中新增事件處理常式。 在程式碼中新增處理常式也可讓您將多個處理常式新增至相同的事件。
新增處理常式
下列範例示範如何建立控制項並新增事件處理常式。 此控制項是在 Button.Click
事件處理常式中建立的不同按鈕。 按下 [Button1] 時。 程式碼會移動並調整新按鈕的大小。 新按鈕的 Click
事件是由 MyNewButton_Click
方法來處理。 為了顯示新按鈕,會將它新增至表單的 Controls
集合。 另外還有程式碼可移除 Button1.Click
事件的處理常式,這會在移除處理常式一節中討論。
private void button1_Click(object sender, EventArgs e)
{
// Create and add the button
Button myNewButton = new()
{
Location = new Point(10, 10),
Size = new Size(120, 25),
Text = "Do work"
};
// Handle the Click event for the new button
myNewButton.Click += MyNewButton_Click;
this.Controls.Add(myNewButton);
// Remove this button handler so the user cannot do this twice
button1.Click -= button1_Click;
}
private void MyNewButton_Click(object sender, EventArgs e)
{
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Create and add the button
Dim myNewButton As New Button() With {.Location = New Point(10, 10),
.Size = New Size(120, 25),
.Text = "Do work"}
'Handle the Click event for the new button
AddHandler myNewButton.Click, AddressOf MyNewButton_Click
Me.Controls.Add(myNewButton)
'Remove this button handler so the user cannot do this twice
RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub
Private Sub MyNewButton_Click(sender As Object, e As EventArgs)
End Sub
若要執行此程式碼,請使用 Visual Studio 視覺化設計工具對表單執行下列動作:
- 將新按鈕新增至表單,並將它命名為 Button1。
- 按下事件按鈕 (),將 [屬性] 窗格模式變更為 [事件]
。
- 按兩下 [Click] 事件以產生處理常式。 此動作會開啟程式碼視窗,並產生空白的
Button1_Click
方法。 - 使用上述的程序碼取代方法程式碼。
如需 C# 事件的詳細資訊,請參閱事件 (C#) 如需 Visual Basic 事件的詳細資訊,請參閱事件 (Visual Basic)
移除處理常式
新增處理常式一節使用一些程式碼來示範新增處理常式。 該程式碼也包含要移除處理常式的呼叫:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
此語法可用來從任何事件中移除任何事件處理常式。
如需 C# 事件的詳細資訊,請參閱事件 (C#) 如需 Visual Basic 事件的詳細資訊,請參閱事件 (Visual Basic)
如何搭配相同的處理常式使用多個事件
使用 Visual Studio 視覺化設計工具的 [屬性] 窗格,您可以選取已由不同事件使用的相同處理常式。 遵循設定處理常式一節中的指示,選取現有的處理常式,而不是建立新的處理常式。
在 C# 中,處理常式會附加至表單設計工具程式碼中控制項的事件,而該程式碼會透過視覺化設計工具變更。 如需 C# 事件的詳細資訊,請參閱事件 (C#)
Visual Basic
在 Visual Basic 中,處理常式會附加至表單程式碼後置檔案中控制項的事件,其中會宣告事件處理常式程式碼。 您可以將多個 Handles
關鍵字新增至事件處理常式程式碼,以將其與多個事件搭配使用。 視覺化設計工具會為您產生 Handles
關鍵字,並將其新增至事件處理常式。 不過,只要處理常式方法的簽章與事件相符,您就可以輕鬆地自行對任何控制項的事件和事件處理常式執行此動作。 如需 Visual Basic 事件的詳細資訊,請參閱事件 (Visual Basic)
此程式碼示範如何將相同的方法當作兩個不同的 Button.Click
事件的處理常式來使用:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
'Do some work to handle the events
End Sub