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
Crie um Windows Form que tenha um controle Button.
private Button button;
Private WithEvents myButton As Button
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
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.