Eventos (Guia de Programação em C#)
Eventos permitem que uma classe ou objeto notifique outras classes ou objetos quando algo interessante ocorre. A classe que envia (ou aciona) o evento é chamada de editor e as classes que recebem (ou manipulam) os eventos são chamadas assinantes.
Em um aplicativo Windows Forms em C# ou Web típico, você assina eventos acionados pelos controles, como botões e caixas de listagem. Você pode usar o IDE (ambiente de desenvolvimento integrado) do Visual C# para procurar os eventos que um controle publica e selecionar aqueles que você deseja manipular. O IDE oferece uma maneira fácil de adicionar automaticamente um método de manipulador de eventos vazio e o código para assinar o evento. Para obter mais informações, confira Como assinar e cancelar a assinatura de eventos.
Visão geral sobre eventos
Os eventos têm as seguintes propriedades:
O editor determina quando um evento é acionado. Os assinantes determinam a ação que é executada em resposta ao evento.
Um evento pode ter vários assinantes. Um assinante pode manipular vários eventos de vários publicadores.
Eventos que não têm assinantes nunca são acionados.
Normalmente, os eventos são usados para sinalizar ações do usuário, como cliques de botão ou seleções de menu em interfaces gráficas do usuário.
Quando um evento tem vários assinantes, os manipuladores de eventos são invocados sincronicamente quando um evento é acionado. Para invocar eventos de forma assíncrona, consulte Chamando métodos síncronos assincronamente.
Na biblioteca de classes do .NET, os eventos são baseados no delegado EventHandler e na classe base EventArgs.
Seções relacionadas
Para obter mais informações, consulte:
Especificação da Linguagem C#
Para obter mais informações, veja Eventos na Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.
Capítulos do Livro em Destaque
Expressões lambda, eventos e delegados em C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers
Delegados e eventos em Aprendendo sobre C# 3.0: conceitos básicos do C# 3.0