Como: Consumir eventos em um aplicativo do Windows Forms

Um cenário comum em aplicativos do Windows Forms é exibir um formulário com controles e, em seguida, executar uma ação específica com base no controle em que o usuário clica.Por exemplo, um controle Button gera um evento quando o usuário clica nele no formulário.Ao manipular o evento, seu aplicativo pode executar a lógica apropriada do aplicativo apropriado para esse clique.

Para mais informações sobre o Windows Forms, veja Guia de introdução aos Formulários do Windows.

Para tratar um evento de clique em um Windows Form

  1. Crie um Windows Form que tenha um controle Button.

    private Button button;
    
    Private WithEvents myButton As Button
    
  2. Defina um manipulador de eventos que corresponda à assinatura Click do representante de eventos .O evento Click usa a classe EventHandler para o tipo representante e a classe EventArgs para os dados do evento.

    void Button_Click(object sender, EventArgs e)
    {...}
    
    Sub Button_Click(sender As Object, e As EventArgs)
    ...
    End Sub
    
  3. Adicione o método manipulador de eventos para o evento Click do botão .

    button.Click += new EventHandler(this.Button_Click);
    
    AddHandler myButton.Click, AddressOf Me.Button_Click
    
    Observação:

    Um designer (por exemplo Visual Studio 2005) fará este evento pronto para você, geração de código é semelhante ao código no exemplo.

Exemplo

O seguinte exemplo de código manipula o evento Click de um Button para alterar a cor do plano de fundo de uma TextBox .Os elementos em negrito mostram o manipulador de eventos e como ele está conectado ao evento Click do Button .

O código nesse exemplo foi escrito sem usar um designer visual (como Visual Studio 2005) e contém apenas elementos essenciais de programação.Se você usar um designer, ele irá gerar código adicional.

[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

Compilando o código

Salve o código anterior para um arquivo (com extensão. cs para um arquivo C# e .vb para Visual Basic 2005, compile e execute.Por exemplo, se o arquivo de origem for chamado WinEvents.cs (ou WinEvents.vb), execute o seguinte comando:

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

O arquivo executável será denominado WinEvents.exe.

Consulte também

Conceitos

Eventos e representantes

Consumindo Eventos

Gerando um evento

Outros recursos

Tratamento e disparada de eventos