Associer un événement d'un contrôle parent aux contrôles enfants

Résolu
Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009 - 22 juil. 2008 à 15:39
Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009 - 22 juil. 2008 à 17:13
Bonjour à tous,

J'aimerais savoir s'il est possible d'affecter un événement d'un contrôle parent aux enfants sans passer par le Handles?

Exemple:

   Private Sub maFonction_MouseEnter(ByVal  Sender As Object, ByVal e As System.EventArgs) Handles 
               panel.MouseEnter

      If  not  panel.IsDock Then
            _timer.stop
      End If

End Sub

J'aimerais que tous mes contrôles enfants qui sont sur mon panel puisse arrêter mon _timer lorsque la souris entre sur le contrôle sans ajouter chacun d'entre-eux dans le Handles afin que si quelqu'un d'autre (ou moi-même) ajoute un contrôle sur le panel, l'événement MouseEnter fonctionnera pour celui-ci.

Pascal

7 réponses

Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009
22 juil. 2008 à 17:13
Pour ceux et celles qui tomberont sur le même problème, voici la solution que j'ai trouvé:

Public
Shared
Sub myAddHandler(
ByRef frm
As Form1,
ByRef ctlParent
As Control)




      On





Error





Resume





Next










      For





Each

ctlEnfant


As

Control


In

ctlParent.Controls



            If

ctlEnfant.Controls.Count > 0


Then

myAddHandler(frm, ctlEnfant)



           AddHandler

ctlEnfant.MouseEnter,


AddressOf

frm.rTabAccueil_MouseEnter



      Next








End





Sub


La fonction se rappelle elle-même si le control est lui-même un control parent.

Le ResumeNext permet à la fonction de continuer si le Event MouseEnter n'existe pas pour le control.
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
22 juil. 2008 à 15:44
j'ai l'impression que pour que la mouse arrive sur un contrôle qui se trouve dans ton panel, il faut dabors qu'elle passe sur ton panel ??


si j'ai raison cela réponds à ta question??? 






Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur



/B>
0
Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009
22 juil. 2008 à 15:53
Oui, tu as raison.  Par contre, j'ai aussi un événement MouseLeave qui démarre le timer. 

Donc, aussitôt que la mouse entre sur un contrôle enfant, l'événement Panel.MouseLeave est appelé.

Alors, je ne suis pas avancé!!
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
22 juil. 2008 à 16:08
  Private Sub maFonction_MouseEnter(ByVal  Sender As Object, ByVal e As System.EventArgs) Handles 
               panel.MouseEnter , machin.MouseEnter , truc.MouseEnter,...

      If  not  panel.IsDock Then
            _timer.stop
      End If

End Sub

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009
22 juil. 2008 à 16:14
Donc, si je comprend bien, c'est que tu n'as pas plus de solution que moi? 

Ou qu'il n'y a pas d'autre moyen?
0
Passepoil75 Messages postés 30 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 17 septembre 2009
22 juil. 2008 à 16:49
J'ai une idée qui n'est pas la solution que j'aurais espérée mais voici:

au Form_Load

For

Each ctl
As Control
In
Me.Panel.Controls

AddHandler ctl.MouseEnter,
AddressOf 
panel_MouseEnter

Next
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
22 juil. 2008 à 16:52
possible si le contrôle possède un event mouseenter

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0
Rejoignez-nous