Plusieurs AddHandler sur un même event ?

Résolu
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010 - 19 nov. 2008 à 11:56
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010 - 19 nov. 2008 à 14:59
Bonjour à tous,

Il semblerait que nativement en faisant  des "AddHandler" sur un même évent, seul la dernière déclaration est prise en compte !!!

Je pensais pouvoir intercepter l'évent de plusieurs endroit en même temps afin que les différents module de mon programme puisse réagir chaqu'un de leurs cotés.

Pouvez-vous me dire comment ajouter une série de Handler en cas d'évent ?

Merci d'avance
A voir également:

4 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
19 nov. 2008 à 13:55
Bonjour,

A priori, Willi t'as donné la solution, me semble-t-il.

A priori dans : PrivateSub ButtonCommand_Click(ByVal sender AsObject, ByVal e As EventArgs)

Faire un envoi directement à chaque procédure...
Call ButtonCommand1_click( .... )
Call ...

Sauf que le traitement ne sera pas véritablement en parallèle, mais un à la suite des autres, mais bon...

Amicalement,
Us.
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 21
19 nov. 2008 à 12:31
Bonjour,
Aucun problème avec le mot clé AddHandler. Voir l'exemple ci-dessous.

Soit un formulaire Form1 et 4 boutons (Button1,Button2,etc...):
8<----------------------------------------------------------
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
        AddHandler Button1.Click, AddressOf ButtonCommand_Click
        AddHandler Button2.Click, AddressOf ButtonCommand_Click
        AddHandler Button3.Click, AddressOf ButtonCommand_Click
        AddHandler Button4.Click, AddressOf ButtonCommand_Click
    EndSub

    PrivateSub ButtonCommand_Click(ByVal sender AsObject, ByVal e As EventArgs)

        Dim btn As Button = CType(sender, Button)
        SelectCase btn.Name
            Case Button1.Name
                MessageBox.Show("Button1...")
            Case Button2.Name
                MessageBox.Show("Button2...")
            Case Button3.Name
                MessageBox.Show("Button3...")
            Case Button4.Name
                MessageBox.Show("Button4...")
        EndSelect

    EndSub
---------------------------------------------------------->8
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010
19 nov. 2008 à 12:38
Moi, ce que je voudrais faire ce serait plutot dans ce style

8<----------------------------------------------------------
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
        AddHandlerButton1.Click, AddressOf ButtonCommand1_Click
        AddHandlerButton1.Click, AddressOf ButtonCommand2_Click
        AddHandlerButton1.Click, AddressOf ButtonCommand3_Click
        AddHandlerButton1.Click, AddressOf ButtonCommand4_Click
    EndSub


    PrivateSub ButtonCommand1_Click(ByVal sender AsObject, ByVal e As EventArgs)

            MessageBox.Show("Capture n°1")

    EndSub


    PrivateSub ButtonCommand1_Click(ByVal sender AsObject, ByVal e As EventArgs)

            MessageBox.Show("Capture n°2")

    EndSub


    PrivateSub ButtonCommand1_Click(ByVal sender AsObject, ByVal e As EventArgs)

            MessageBox.Show("Capture n°3")

    EndSub


    PrivateSub ButtonCommand1_Click(ByVal sender AsObject, ByVal e As EventArgs)

            MessageBox.Show("Capture n°4")

    EndSub
---------------------------------------------------------->8

nous sommes d'accord que ici, c'est complètement inutile, mais dans mon cas, ca permet une certaine modularité/souplesse.

Merci d'avance
narfight Messages postés 129 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 4 mars 2010
19 nov. 2008 à 14:59
Je viens de constaté que l'autre event était démarré que à la fin de l'autre event et ce malgré des DoEvents.

Je vous remercie tout les deux pour votre aide
Rejoignez-nous