J'apprends le délégué et l'événement hadler parce que j'ai besoin de mon code. Dans l'exemple, le test de classe génère le message Bonjour, je suis un événement!
De cette classe, j'ai besoin d'appeler la méthode Evento1 en classe Test1, pour générer le message Bonjour, je suis un autre événement! Mais je ne suis pas capable de le faire.
J'ai essayé d'instancier la classe Test1 et d'appeler la méthode. Le debuger compile mais le deuxième message n'apparaît pas.Gestionnaire de délégué et d'événement C# # entre deux classes
namespace Eventi1
{
// Delegate declaration
delegate void testEventHandler(object source, string message);
class Test
{
// Event
public event testEventHandler testEvento;
// Function that triggers the event
public void Evento(string message)
{
Console.WriteLine("Event!");
if (testEvento != null)
{ testEvento(this, message); }
Test1 evento = new Test1();
evento.Evento1("Hello, i'm another event!");
}
}
class Test1
{
// Event1
public event testEventHandler testEvento;
// Function that triggers the event
public void Evento1(string message)
{
Console.WriteLine("Event1!");
if (testEvento != null)
{ testEvento(this, message); }
}
}
public class EventSample
{
// Constructor
public EventSample() { }
static void Main()
{
// Classe instantiation
Test b = new Test();
// Event handler
//b.testEvento += new testEventHandler(onTestAction);
b.testEvento += onTestAction;
// Event invocation
b.Evento("Hello, i'm an event!");
}
// Function that triggers the event
public static void onTestAction(object source, string message)
{
Console.WriteLine("We're inside the event handler.");
Console.WriteLine("Messagge: " + message);
Console.ReadLine();
}
}
}
PS seconde question Aansari
class Test
{
public delegate void testEventHandler(object source, string message);
public event testEventHandler testEvento;
// Function that triggers the event
public void Evento(string message)
{
Console.WriteLine("Event!");
if (testEvento != null)
{ testEvento(this, message); }
Test1 evento = new Test1();
evento.testEvento += testEvento;
evento.Evento1();
}
}
class Test1
{
public delegate void testEventHandler(object source, string message);
public event testEventHandler testEvento;
// Function that triggers the event1
public void Evento1()
{
Console.WriteLine("Event1!");
if (testEvento != null)
{ testEvento(this, "Hello, i'm another event!"); }
}
}
public class EventSample
{
public EventSample() { }
static void Main()
{
Test b = new Test();
b.testEvento += onTestAction;
b.Evento("Hello, i'm an event!");
}
// Function that triggers the event
public static void onTestAction(object source, string message)
{
Console.WriteLine("We're inside the event handler.");
Console.WriteLine("Messagge: " + message + "\n");
Console.WriteLine("Press ENTER");
Console.ReadLine();
}
}
_J'ai essayé d'instancier le test de classe1 et d'appeler la méthode. Le débugeur compile mais le second message n'apparaît pas. Correct, car vous n'êtes pas abonné à 'testEvento' dans la classe' Test1' (vous avez seulement souscrit à l'évènement dans la classe 'Test'). Notez que vous êtes abonné à un événement uniquement de cette instance particulière, pas à un "événement communément nommé entre classes" ou même à plusieurs instances de la même classe. –
Je vous remercie mais malheureusement j'ai très peu compris ce que vous m'avez dit. Pouvez-vous s'il vous plaît expliquer de manière plus simple ou corriger le code? Merci encore –