HOW TO:使用 Windows Form 應用程式中的事件
更新:2007 年 11 月
Windows Form 應用程式中的一般狀況為使用控制項顯示表單,然後依據使用者所按的控制項,執行特定動作。例如,當使用者在網頁中按一下表單中的 Button 控制項,會引發事件。藉由處理事件,應用程式能為按一下按鈕的動作執行適當的應用程式邏輯。
如需 Windows Form 的詳細資訊,請參閱 Windows Form 使用者入門。
若要處理 Windows Form 上的按一下按鈕事件
建立具有 Button 控制項的 Windows Form。
private Button button;
Private WithEvents myButton As Button
定義比對 Click 事件委派簽章的事件處理常式。Click 事件使用 EventHandler 類別做為委派型別,且用 EventArgs 類別做為事件資料。
void Button_Click(object sender, EventArgs e) {...}
Sub Button_Click(sender As Object, e As EventArgs) ... End Sub
將事件處理常式方法加入至 Button 的 Click 事件。
button.Click += new EventHandler(this.Button_Click);
AddHandler myButton.Click, AddressOf Me.Button_Click
注意事項: 設計工具 (例如 Visual Studio 2005) 將產生類似此範例的程式碼,以進行事件架設 (Wiring)。
範例
下列程式碼範例會處理 Button 的 Click 事件,以變更 TextBox 的背景色彩。以粗體字表示的項目是顯示事件處理常式和它如何連接到 Button 的 Click 事件。
撰寫此範例的程式碼時,並沒有使用視覺化設計工具 (Visual Designer) (例如 Visual Studio 2005),而且只包含基本的程式設計項目。如果您使用設計工具,它將會產生額外的程式碼。
[C#]
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
public class MyForm : Form
{
private TextBox box;
private Button button;
public MyForm() : base()
{
box = new TextBox();
box.BackColor = System.Drawing.Color.Cyan;
box.Size = new Size(100,100);
box.Location = new Point(50,50);
box.Text = "Hello";
button = new Button();
button.Location = new Point(50,100);
button.Text = "Click Me";
// To wire the event, create
// a delegate instance and add it to the Click event.
button.Click += new EventHandler(this.Button_Click);
Controls.Add(box);
Controls.Add(button);
}
// The event handler.
private void Button_Click(object sender, EventArgs e) { box.BackColor = System.Drawing.Color.Green; }
// The STAThreadAttribute indicates that Windows Forms uses the
// single-threaded apartment model.
[STAThreadAttribute]
public static void Main(string[] args)
{
Application.Run(new MyForm());
}
}
[Visual Basic]
Option Strict On
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Drawing
Public Class MyForm
Inherits Form
Private box As TextBox
Private WithEvents myButton As Button
Public Sub New()
box = New TextBox()
box.BackColor = System.Drawing.Color.Cyan
box.Size = New Size(100, 100)
box.Location = New Point(50, 50)
box.Text = "Hello"
myButton = New Button()
myButton.Location = New Point(50, 100)
myButton.Text = "Click Me"
AddHandler myButton.Click, AddressOf Me.Button_Click
Controls.Add(box)
Controls.Add(myButton)
End Sub
' The event handler.
Private Sub Button_Click(sender As Object, e As EventArgs) box.BackColor = System.Drawing.Color.Green End Sub
' The STAThreadAttribute indicates that Windows Forms uses the
' single-threaded apartment model.
<STAThreadAttribute()> _
Public Shared Sub Main(args() As String)
Application.Run(New MyForm())
End Sub
End Class
編譯程式碼
將前面的程式碼存入檔案 (C# 檔案用 .cs 副檔名,而 Visual Basic 2005 用 .vb),並加以編譯和執行。例如,如果原始程式檔 (Source File) 的名稱為 WinEvents.cs (或 WinEvents.vb),則執行下列命令:
csc /r:System.DLL /r:System.Windows.Forms.DLL /r:System.Drawing.DLL WinEvents.cs
vbc /r:System.DLL /r:System.Windows.Forms.DLL /r:System.Drawing.DLL WinEvents.vb
您的可執行檔將會命名為 WinEvents.exe。