Evenement dans une dll

sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 - 12 mars 2008 à 09:38
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 - 12 mars 2008 à 11:11
J'ai voulu ré-up un topic mais apperement les topics résoluent ne remontent pas donc je créé le mien.

J'ai une dll et un exe, l'exe appel la dll qui affiche un form, de là je fais mes traitements, je désire ensuite créer un événement afin que mon exe sache que la form de la dll est cachée!

j'ai donc déclaré dans ma dll une classe:

public class FinEventArgs : EventArgs
{
public string Fin;
public FinEventArgs(string fin) { Fin = fin; }
}


puis dans une autre classe de ma dll:
public class ListesImages
{
public delegate void FinEventHandler(object sender, FinEventArgs fii);
public event FinEventHandler Fin;

public void goto_som_cata()
{
e = new FinEventArgs("fin");
maFormSuppZoom.Hide();



if (Fin != null)
{
Fin(this, e);

}

}

}


et dans mon exe:

private void direction_suppzoom(Catalogue monCata)
{
maListeImage.aff_FormSuppZoom(monCata._nom, monCata._chemin_de_creation);

maListeImage.Fin += new ListesImages.FinEventHandler(maListeImage_Fin);
}

void maListeImage_Fin(object sender, FinEventArgs fii)
{
MessageBox.Show("ça marche");
}


et la problème c'est que ça "marche" pas!

déjà Fin est toujours égale à null!
et en faisant du pas à pas j'ai remarqué que:

maListeImage.Fin += new ListesImages.FinEventHandler(maListeImage_Fin);

se déclenche dés l'affichage du Form et n'attends pas le déclenchement dans la fonction: goto_som_cata()

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
12 mars 2008 à 10:00
inverse les lignes :

            maListeImage.aff_FormSuppZoom(monCata._nom, monCata._chemin_de_creation);

            maListeImage.Fin += new ListesImages.FinEventHandler(maListeImage_Fin);

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 2
12 mars 2008 à 10:12
Merci déjà maintenant ça réagi lors du déboggage j'ai aussi mis :

Fin(this, e);

à la place de :

if (Fin != null)
{
Fin(this, e);
}

et là j'ai un message d'erreur selon lequel Fin est null !
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
12 mars 2008 à 11:04
La ligne :

maListeImage.Fin += new ListesImages.FinEventHandler(maListeImage_Fin);

signifie simplement que tu vas t'abonner à l'évènement "Fin" (en lisant la derniere ligne de ton premier message je ne suis pas sur que tu ai réellement compris ça).

Le fait que "Fin" soit null lorsque tu déclenche l'évènement signifie que personne n'est abonné à cet évènement (à ce moment précis).

Conclusion : tu appelle probablement goto_som_cata avant d'avoir fait maListeImage.Fin + = new ListesImages.FinEventHandler(maListeImage_Fin);

Donc soit il faut t'abonner plus tôt, soit il faut déclencher ton évènement plus tard...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 2
12 mars 2008 à 11:11
Le problème c'est que non (enfin je crois)!

je m'abonnes à l'événement "Fin":

maListeImage.Fin += new ListesImages.FinEventHandler(maListeImage_Fin);

puis j'affiche le Form de ma dll:

maListeImage.aff_FormSuppZoom(monCata._nom, monCata._chemin_de_creation);

je fais différents traitements avec ce form.
puis je presse un bouton pour quitter qui actionne goto_som_cata:

public void goto_som_cata()
{
e = new FinEventArgs("fin");
maFormSuppZoom.Hide();


if (Fin != null)
{
Fin(this, e);

}

}


donc je ne vois pas le truc là!
0
Rejoignez-nous