Visão geral de eventos (Windows Forms)
Um evento é uma ação à qual você pode responder ou "manipular", no código. Os eventos podem ser gerados por uma ação do usuário, como clicar no mouse ou pressionar uma chave; por código do programa; ou pelo sistema.
Aplicativos controlados por eventos executam código em resposta a um evento. Cada formulário e controle expõe um conjunto predefinido de eventos contra os quais você pode programar. Se um desses eventos ocorrer e houver código no manipulador de eventos associado, esse código será invocado.
Os tipos de eventos gerados por um objeto variam, mas muitos tipos são comuns à maioria dos controles. Por exemplo, a maioria dos objetos manipulará um evento Click. Se um usuário clicar em um formulário, o código no manipulador de eventos Click do formulário será executado.
Nota
Muitos eventos ocorrem em conjunto com outros eventos. Por exemplo, durante o evento DoubleClick, ocorrem os eventos MouseDown, MouseUpe Click.
Para obter informações sobre como gerar e consumir um evento, consulte Eventos.
Representantes e sua função
Os delegados são classes comumente usadas no .NET Framework para criar mecanismos de manipulação de eventos. Delegados equivalem aproximadamente a ponteiros de função, geralmente usados no Visual C++ e em outras linguagens orientadas a objetos. No entanto, ao contrário dos ponteiros de função, os delegados são orientados a objetos, seguros, e com tipos seguros. Além disso, onde um ponteiro de função contém apenas uma referência a uma função específica, um delegado consiste em uma referência a um objeto e referências a um ou mais métodos dentro do objeto.
Esse modelo de evento usa delegados para associar eventos aos métodos usados para lidar com eles. O delegado permite que outras classes se registrem para notificação de evento especificando um método de manipulador. Quando o evento ocorre, o delegado chama o método vinculado. Para obter mais informações sobre como definir representantes, consulte Eventos.
Os delegados podem ser associados a um único método ou a vários métodos, conhecidos como multicasting. Ao criar um delegado para um evento, você (ou o Windows) normalmente cria um evento multicast. Uma exceção rara pode ser um evento que resulta em um procedimento específico (como exibir uma caixa de diálogo) que não repetiria logicamente várias vezes por evento. Para obter informações sobre como criar um delegado multicast, consulte Como combinar delegados (Delegados Multicast).
Um delegado multicast mantém uma lista de invocação dos métodos aos quais está associado. O delegado multicast dá suporte a um método Combine para adicionar um método à lista de invocação e a um método Remove para removê-lo.
Quando um evento é registrado pelo aplicativo, o controle aciona o evento invocando o delegado para esse evento. O delegado, por sua vez, chama o método vinculado. No caso mais comum (um delegado multicast), o delegado chama cada método vinculado na lista de invocação, o que fornece uma notificação de um para muitos. Essa estratégia significa que o controle não precisa manter uma lista de objetos de destino para notificação de evento— o delegado manipula todo o registro e a notificação.
Os delegados também permitem que múltiplos eventos sejam vinculados ao mesmo método, possibilitando uma notificação de muitos para um. Por exemplo, um evento de clique em botão e um evento de clique em comando de menu podem invocar o mesmo delegado, que então chama um único método para lidar com esses eventos separados da mesma maneira.
O mecanismo de associação usado com delegados é dinâmico: um delegado pode ser associado em tempo de execução a qualquer método cuja assinatura corresponda à do manipulador de eventos. Com esse recurso, você pode configurar ou alterar o método associado dependendo de uma condição e anexar dinamicamente um manipulador de eventos a um controle.
Consulte também
- Criando Manipuladores de Eventos em Windows Forms
- Visão geral dos manipuladores de eventos
.NET Desktop feedback