Gewusst wie: Verarbeiten von Ereignissen in einer Windows Forms-Anwendung

Aktualisiert: November 2007

In Windows Forms-Anwendungen wird häufig ein Formular mit Steuerelementen angezeigt und dann basierend auf dem Steuerelement, auf das der Benutzer klickt, ein bestimmter Vorgang ausgelöst. So löst z. B. ein Button-Steuerelement ein Ereignis aus, wenn der Benutzer auf dem Formular darauf klickt. Indem sie das Ereignis behandelt, kann die Anwendung die dem Klicken auf die Schaltfläche entsprechende Anwendungslogik ausführen.

Weitere Informationen zu Windows Forms finden Sie unter Erste Schritte mit Windows Forms.

So behandeln Sie ein Click-Ereignis für eine Schaltfläche auf einem Windows Form

  1. Erstellen Sie ein Windows Form, das über ein Button-Steuerelement verfügt.

    private Button button;
    
    Private WithEvents myButton As Button
    
  2. Definieren Sie einen Ereignishandler, der der Signatur des Delegaten für das Click-Ereignis entspricht. Das Click-Ereignis verwendet die EventHandler-Klasse für den Delegattyp und die EventArgs-Klasse für die Ereignisdaten.

    void Button_Click(object sender, EventArgs e)
    {...}
    
    Sub Button_Click(sender As Object, e As EventArgs)
    ...
    End Sub
    
  3. Fügen Sie die Ereignishandlermethode dem Click-Ereignis des Button hinzu.

    button.Click += new EventHandler(this.Button_Click);
    
    AddHandler myButton.Click, AddressOf Me.Button_Click
    
    Hinweis:

    Ein Designer (z. B. Visual Studio 2005) übernimmt das Verknüpfen des Ereignisses durch das Generieren von Code, der dem in diesem Beispiel verwendeten Code entspricht.

Beispiel

Das folgende Codebeispiel behandelt das Click-Ereignis von Button, um die Hintergrundfarbe für TextBox zu ändern. Die fett dargestellten Elemente zeigen den Ereignishandler und veranschaulichen, wie dieser mit dem Click-Ereignis von Button verknüpft wird.

Der Code in diesem Beispiel wurde ohne einen visuellen Designer wie Visual Studio 2005 verfasst und enthält nur die wichtigsten Programmierungselemente. Wenn Sie einen Designer verwenden, generiert dieser zusätzlichen Code.

[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

Kompilieren des Codes

Speichern Sie den oben stehenden Code in einer Datei (mit der Erweiterung .cs für eine C#-Datei und .vb für Visual Basic 2005). Kompilieren Sie die Datei, und führen Sie sie aus. Wenn die Quelldatei z. B. den Namen WinEvents.cs bzw. WinEvents.vb aufweist, führen Sie den folgenden Befehl aus:

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

Die ausführbare Datei erhält den Namen WinEvents.exe.

Siehe auch

Konzepte

Ereignisse und Delegaten

Behandeln von Ereignissen

Auslösen eines Ereignisses

Weitere Ressourcen

Behandeln und Auslösen von Ereignissen