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.

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#.

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

Confira também