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

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.
3
cs_Willi
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
0
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
0
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
0