Como posso fazer meu próprio evento em c #?
122
Aqui está um exemplo de criação e uso de um evento com c #
using System;
namespace Event_Example
{
//First we have to define a delegate that acts as a signature for the
//function that is ultimately called when the event is triggered.
//You will notice that the second parameter is of MyEventArgs type.
//This object will contain information about the triggered event.
public delegate void MyEventHandler(object source, MyEventArgs e);
//This is a class which describes the event to the class that recieves it.
//An EventArgs class must always derive from System.EventArgs.
public class MyEventArgs : EventArgs
{
private string EventInfo;
public MyEventArgs(string Text)
{
EventInfo = Text;
}
public string GetInfo()
{
return EventInfo;
}
}
//This next class is the one which contains an event and triggers it
//once an action is performed. For example, lets trigger this event
//once a variable is incremented over a particular value. Notice the
//event uses the MyEventHandler delegate to create a signature
//for the called function.
public class MyClass
{
public event MyEventHandler OnMaximum;
private int i;
private int Maximum = 10;
public int MyValue
{
get
{
return i;
}
set
{
if(value <= Maximum)
{
i = value;
}
else
{
//To make sure we only trigger the event if a handler is present
//we check the event to make sure it's not null.
if(OnMaximum != null)
{
OnMaximum(this, new MyEventArgs("You've entered " +
value.ToString() +
", but the maximum is " +
Maximum.ToString()));
}
}
}
}
}
class Program
{
//This is the actual method that will be assigned to the event handler
//within the above class. This is where we perform an action once the
//event has been triggered.
static void MaximumReached(object source, MyEventArgs e)
{
Console.WriteLine(e.GetInfo());
}
static void Main(string[] args)
{
//Now lets test the event contained in the above class.
MyClass MyObject = new MyClass();
MyObject.OnMaximum += new MyEventHandler(MaximumReached);
for(int x = 0; x <= 15; x++)
{
MyObject.MyValue = x;
}
Console.ReadLine();
}
}
}
event
parte da aula.Eu tenho uma discussão completa de eventos e delegados no meu artigo de eventos . Para o tipo mais simples de evento, você pode simplesmente declarar um evento público e o compilador criará um evento e um campo para acompanhar os assinantes:
Se você precisar de uma lógica de assinatura / cancelamento de assinatura mais complicada, faça isso explicitamente:
fonte
Você pode declarar um evento com o seguinte código:
Um tipo de delegado personalizado em vez de EventHandler pode ser usado, se necessário.
Você pode encontrar informações / tutoriais detalhados sobre o uso de eventos no .NET no artigo Tutorial de Eventos (MSDN).
fonte
para fazer isso, temos que conhecer os três componentes
firing the Event
responding to the Event
o próprio evento
uma. Evento
b .EventArgs
c. Enumeração EventArgs
Agora vamos criar um evento que foi acionado quando uma função é chamada
mas eu tenho a minha ordem de resolver esse problema assim: estou usando a classe antes de criá-la
o local responsável por
responding to the Event
NetLog é uma classe estática, explicarei mais tarde
o próximo passo é
o local responsável por
firing the Event
o terceiro passo
Eu distorci o evento dentro de uma classe chamada NetLog
essa classe agora contêm
the Event
,EventArgs
eEventArgs Enums
ethe function
responsável por disparar o eventodesculpe por esta longa resposta
fonte