如何處理控制項事件 (Windows Forms .NET)
控制項的事件(以及表單的事件)通常會透過適用于 Windows Forms 的 Visual Studio Visual Designer 來設定。 透過視覺化設計工具設定事件稱為在設計階段處理事件。 您也可以在程式碼中動態處理事件,稱為在執行時間處理事件。 在執行時間建立的事件可讓您根據應用程式目前執行的動作動態連接事件處理常式。
重要
.NET 7 和 .NET 6 的桌面指南檔正在建置中。
處理事件 - 設計工具
在 Visual Studio 中,使用 Visual Designer 來管理控制項事件的處理常式。 視覺化設計工具會產生處理常式代碼,並將它新增至事件。
設定處理常式
使用 [ 屬性 ] 窗格來新增或設定事件的處理常式:
開啟表單的視覺化設計工具,其中包含要變更的控制項。
選取 控制項。
按下 [事件] 按鈕 , 將 [ 屬性 ] 窗格模式變更為 [事件 ]。
尋找您要新增處理常式的事件,例如 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 Visual Designer 對表單執行下列動作:
- 將新按鈕新增至表單,並將它命名為 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 Visual Designer 的 [屬性 ] 窗格,您可以選取已由不同事件使用的相同處理常式。 依照設定處理常式區段中的 指示,選取現有的處理常式 ,而不是建立新的處理常式。
在 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
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應