Eventos em C#: Manipulando Ações do Usuário e Notificações do Sistema
Eventos são ações do usuário, como pressionamento de tecla, cliques, movimentos do mouse, etc., ou alguma ocorrência, como notificações geradas pelo sistema. As aplicações precisam responder a eventos quando eles ocorrem. Por exemplo, interrupções. Eventos são usados para comunicação entre processos.
Usando Delegates com Eventos
Os eventos são declarados e disparados em uma classe e associados aos manipuladores de eventos usando delegates dentro da mesma classe ou de outra classe. A classe que contém o evento é usada para publicar o evento. Isso é chamado de classe publicadora (publisher). Alguma outra classe que aceita este evento é chamada de classe assinante (subscriber). Eventos usam o modelo publicador-assinante.
Um publicador é um objeto que contém a definição do evento e do delegate. A associação evento-delegate também é definida neste objeto. Um objeto da classe publicadora invoca o evento e ele é notificado a outros objetos.
Um assinante é um objeto que aceita o evento e fornece um manipulador de eventos. O delegate na classe publicadora invoca o método (manipulador de eventos) da classe assinante.
Declarando Eventos
Para declarar um evento dentro de uma classe, primeiro você deve declarar um tipo delegate para o evento:
public delegate string BoilerLogHandler(string str);
em seguida, declare o evento usando a palavra-chave event:
event BoilerLogHandler BoilerEventLog;
O código anterior define um delegate chamado BoilerLogHandler e um evento chamado BoilerEventLog, que invoca o delegate quando é disparado.
Exemplo
Demo ao Vivousing System;
namespace SampleApp {
public delegate string MyDel(string str);
class EventProgram {
event MyDel MyEvent;
public EventProgram() {
this.MyEvent += new MyDel(this.WelcomeUser);
}
public string WelcomeUser(string username) {
return "Bem-vindo " + username;
}
static void Main(string[] args) {
EventProgram obj1 = new EventProgram();
string result = obj1.MyEvent("Tutorials Point");
Console.WriteLine(result);
}
}
}
Quando o código acima é compilado e executado, produz o seguinte resultado:
Bem-vindo Tutorials Point
Linguagem C
- Classes e Objetos em C#: Fundamentos para POO Robusta
- Entendendo Modificadores de Acesso em C#: Public, Private, Protected, Internal e Mais
- Palavra-chave Static em C#: Dominando Variáveis, Métodos e Classes Estáticas
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes Aninhadas em C#: Definição, Uso e Herança
- Entendendo Classes e Métodos Parciais em C#
- Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
- Entendendo Polimorfismo em C++: Guia Prático
- Dominando Abstração de Dados em C++: Simplifique Design com Separação Interface-Implementação
- Encapsulamento de Dados em C++: Proteja Seu Código