xoher
Messages postés2Date d'inscriptionmercredi 24 mars 2010StatutMembreDernière intervention 1 septembre 2010
-
10 août 2010 à 13:37
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
10 août 2010 à 16:59
Bonjour à tous,
Je viens solliciter votre aide car malgré quelques lectures sur le sujet, je n'arrive pas a résoudre mon problème.
J'ai un programme en C# avec une classe principal et une classe secondaire (c'est un classe qui crée un Control personnalisé).
Comment faire pour qu'un évènement dans ma classe secondaire lance une fonction de la classe principal? ( j'ai essayé différents exemples du net mais a chaque fois l'écouteur ne reconnait pas le type de l'évènement)..
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 10 août 2010 à 16:59
Bonjour
Tout d'abord, dans ta classe secondaire tu définis la signature de l'evenement
et l'evenement lui même
//Définition de la signature des evenements
public delegate void MyDelegate(string a);
class ClassSecondaire
{
// on défini un evenement de type MyDelegate
public event MyDelegate MyEvent;
public ClassSecondaire()
{
}
private void MyFunction()
{
//Si quelqu'un s'est aboné à l'évenment on le lance
if (MyEvent != null)
MyEvent("coucou");
}
}
Ensuite, dans ta classe principale, tu crées une instance de la classe secondaire
et tu t'abonnes à son évenement.
public Form1()
{
InitializeComponent();
ClassSecondaire classSecondaire = new ClassSecondaire();
classSecondaire.MyEvent += new MyDelegate(classSecondaire_MyEvent);
...
}
//Ici le gestionaire de l'evenement de la classe secondaire
void classSecondaire_MyEvent(string a)
{
MessageBox.Show("Reçu " + a);
}