Associer un événement d'un contrôle parent aux contrôles enfants [Résolu]

Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention - 22 juil. 2008 à 15:39 - Dernière réponse : Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention - 22 juil. 2008 à 17:13
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Passepoil75
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 22 juil. 2008 à 15:44
0
Utile
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>
Commenter la réponse de gillardg
Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention - 22 juil. 2008 à 15:53
0
Utile
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é!!
Commenter la réponse de Passepoil75
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 22 juil. 2008 à 16:08
0
Utile
  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>
Commenter la réponse de gillardg
Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention - 22 juil. 2008 à 16:14
0
Utile
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?
Commenter la réponse de Passepoil75
Passepoil75 30 Messages postés vendredi 12 janvier 2007Date d'inscription 17 septembre 2009 Dernière intervention - 22 juil. 2008 à 16:49
0
Utile
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
Commenter la réponse de Passepoil75
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 22 juil. 2008 à 16:52
0
Utile
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>
Commenter la réponse de gillardg

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.