Passage de Parametre sur Evenement entre 2 Class

Signaler
Messages postés
100
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
1 mars 2010
-
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
-
Bonjour à tous,
Je suis sur une application WPF en C#(mes débuts en c#)
Config : Visual Studio 2008

J'ai 2 CLASS:
Une COM_USB qui se charge de recevoir les données du Port Serie et les stoker dans un tableau de Byte.

Une MAIN qui doit lire les DataRecue sur un Evenement de la Class_USB.

Je souhaite que ma CLASS_USB reste Générique. C'est pourquoi il faut que la Class MAIN attende un Evenement de la Class_USB.

J'espere que ça se comprend!!!!!


Mon code étant pas clair pourriez vous me donner un exemple "General"

MERCI D'AVANCE



Cyril

2 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
23
Bonjour,

Ton initiative est plus que parfaite ! La volonté d'être générique dans nos développements est plus qu'importante.

Voici quelques tutoriaux qui t'aideront:
- http://freddyboy.developpez.com/dotnet/articles/events/
- http://www.yevol.com/csharp/classes2/events.htm
- http://www.csharphelp.com/archives/archive253.html
- http://www.akadia.com/services/dotnet_delegates_and_events.html

Et un exemple de passage de paramètres par événements:
- http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx

Voila tout,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
D'abord tu déclare ton argument pour ton evenemnt:

class MyEventArgs : EventArgs
{
private string data;
//contructeur
//getter sur ta data
}

Ensuite dans ta class usb tu déclares un event :
private event EventHandler<MyEventArgs> m_MyEvent

ensuite un méthode pour lever l'event :

protected virtual void OnMyEvent(MyEventArgs e)
{
if (m_MyEvent != null) m_MyEvent(this, e);
}

Puis une propriété pour s'abonner a l'évènement :

public event EventHandler<MyEventArgs> MyEvent
{
add { m_MyEvent += value; }
remove { m_MyEvent -= value; }
}

Tu n'as plus qu'a appeler OnMyEvent lorsque tu veux lever l'évènement.
De l'autre coté, tu t'abonne à l'évènement de manière classique :
MyInstance.MyEvent += new EventHandler<MyEventArgs>(blabla);
ou MyInstance.MyEvent += blabla;

avec la complétion ta méthode blabla sera généré automatiquement, sinon elle doit simplement respecter le profil de EventHandler<MyEventArgs>, cest a dire
void blabla(object sender, MyEventArgs e) {}

cest tout