Como lidar com um evento de controle (Windows Forms .NET)
Os eventos para controles (e para formulários) geralmente são definidos por meio do Visual Studio Visual Designer para Windows Forms. Definir um evento por meio do Visual Designer é conhecido como manipular um evento em tempo de design. Você também pode manipular eventos dinamicamente no código, conhecido como manipulação de eventos em tempo de execução. Um evento criado em tempo de execução permite que você conecte manipuladores de eventos dinamicamente com base no que seu aplicativo está fazendo no momento.
Manipular um evento - designer
No Visual Studio, use o Visual Designer para gerenciar manipuladores para eventos de controle. O Visual Designer gerará o código do manipulador e o adicionará ao evento para você.
Definir o manipulador
Use o painel Propriedades para adicionar ou definir o manipulador de um evento:
Abra o Visual Designer do formulário que contém o controle a ser alterado.
Selecione o controle .
Altere o modo do painel Propriedades para Eventos pressionando o botão de eventos ( ).
Localize o evento ao qual você deseja adicionar um manipulador, por exemplo, o evento Click :
Realize um dos seguintes procedimentos:
Clique duas vezes no evento para gerar um novo manipulador, ele ficará em branco se nenhum manipulador for atribuído. Se não estiver em branco, essa ação abrirá o código do formulário e navegará até o manipulador existente.
Use a caixa de seleção ( ) para escolher um manipulador existente.
A caixa de seleção listará todos os métodos que têm uma assinatura de método compatível para o manipulador de eventos.
Limpe o manipulador
Para remover um manipulador de eventos, você não pode simplesmente excluir o código do manipulador que está no arquivo code-behind do formulário, ele ainda é referenciado pelo evento. Use o painel Propriedades para remover o manipulador de um evento:
Abra o Visual Designer do formulário que contém o controle a ser alterado.
Selecione o controle .
Altere o modo do painel Propriedades para Eventos pressionando o botão de eventos ( ).
Localize o evento que contém o manipulador que você deseja remover, por exemplo, o evento Click :
Clique com o botão direito do mouse no evento e escolha Redefinir.
Manipular um evento - código
Normalmente, você adiciona manipuladores de eventos aos controles em tempo de design por meio do Visual Designer. No entanto, você pode criar controles em tempo de execução, o que exige que você adicione manipuladores de eventos no código. Adicionar manipuladores no código também oferece a chance de adicionar vários manipuladores ao mesmo evento.
Adicionar um manipulador
O exemplo a seguir mostra como criar um controle e adicionar um manipulador de eventos. Esse controle é criado no Button.Click
manipulador de eventos em um botão diferente. Quando o botão 1 é pressionado. O código se move e dimensiona um novo botão. O evento do Click
novo botão é manipulado MyNewButton_Click
pelo método. Para que o novo botão apareça, ele é adicionado à coleção do Controls
formulário. Também há código para remover o Button1.Click
manipulador do evento, isso é discutido na seção Remover o manipulador .
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
Para executar esse código, faça o seguinte em um formulário com o Visual Studio Visual Designer:
- Adicione um novo botão ao formulário e nomeie-o como Button1.
- Altere o modo do painel Propriedades para Eventos pressionando o botão de evento ( ).
- Clique duas vezes no evento Click para gerar um manipulador. Essa ação abre a janela de código e gera um método em branco
Button1_Click
. - Substitua o código do método pelo código anterior acima.
Para obter mais informações sobre eventos C#, consulte Eventos (C#) Para obter mais informações sobre eventos do Visual Basic, consulte Eventos (Visual Basic)
Remover o manipulador
A seção Adicionar um manipulador usou algum código para demonstrar a adição de um manipulador. Esse código também continha uma chamada para remover um manipulador:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Essa sintaxe pode ser usada para remover qualquer manipulador de eventos de qualquer evento.
Para obter mais informações sobre eventos C#, consulte Eventos (C#) Para obter mais informações sobre eventos do Visual Basic, consulte Eventos (Visual Basic)
Como usar vários eventos com o mesmo manipulador
Com o painel Propriedades do Visual Studio Visual Designer, você pode selecionar o mesmo manipulador já em uso por um evento diferente. Siga as instruções na seção Definir o manipulador para selecionar um manipulador existente em vez de criar um novo.
Em C#, o manipulador é anexado ao evento de um controle no código do designer do formulário, que foi alterado por meio do Visual Designer. Para obter mais informações sobre eventos C#, consulte Eventos (C#)
Visual Basic
No Visual Basic, o manipulador é anexado ao evento de um controle no arquivo code-behind do formulário, onde o código do manipulador de eventos é declarado. Várias Handles
palavras-chave podem ser adicionadas ao código do manipulador de eventos para usá-lo com vários eventos. O Visual Designer gerará a Handles
palavra-chave para você e a adicionará ao manipulador de eventos. No entanto, você pode fazer isso facilmente com o evento e o manipulador de eventos de qualquer controle, desde que a assinatura do método do manipulador corresponda ao evento. Para obter mais informações sobre eventos do Visual Basic, consulte Eventos (Visual Basic)
Este código demonstra como o mesmo método pode ser usado como um manipulador para dois eventos diferentes 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
Confira também
.NET Desktop feedback