IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Gestion des events dans un usercontrol


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Gestion des events dans un usercontrol
    Bonjour à tous !

    J'ai créé un usercontrol composé d'un Label, un TextBox et un Button. Je veux permettre l'utilisation normale des événements de mon usercontrol. Mais les évènements du Label, du TextBox et du Button sont prioritaires.

    Par exemple, si je veux réagir aux évènements MouseLeave et MouseHover de mon usercontrol j'ai la mauvaise surprise de constater que lors du survol du Label par exemple, mon usercontrol déclenche l'évènement MouseLeave et c'est le Label qui déclenche alors MouseHover. Tout se passe comme si mon Label était situé au dessus de mon usercontrol sur mon formulaire.

    Je sais qu'il s'agit d'un comportement normal (pas de hiérarchie gérée) et donc d'un problème connu mais je n'arrive pas à savoir s'il y a un moyen de contourner ce problème ? Une forme de preview des events par le usercontrol parent ?

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    une solution que tu pourrais faire :

    Le userControl s'abonne au mouseMove de ses enfants et fourni un event
    qui relaie cela à son niveau

    Après, pour s'abonner au MouseMove "proprement", tu pourrais faire un overide de "OnControlAdded", comme celà, tu auras "moins" de risque d'oublier de t'abonner à un mouseMove d'un des enfants dans le cas ou tu aurais l'idée d'en rajouter (un enfant, controle de plus )

  3. #3
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 86
    Points
    86
    Par défaut
    Merci de ta réponse.

    J'y avais pensé. Mais d'une part ça oblige à utiliser la même technique pour chaque event posant problème, et d'autre part ça n'évitera pas par exemple le problème des events Enter / Leave du usercontrol : Si je passe la souris sur le usercontrol en passant sur le Label par exemple j'aurais ceci :

    Enter (usercontrol)
    Leave (usercontrol)
    ** entrée du Label **
    Enter (Label)
    Leave (Label)
    ** sortie du Label **
    Enter (usercontrol)
    Leave (usercontrol)

    Pas très propre et pas vraiment gérable. Je voudrais ceci :
    Enter (usercontrol)
    ** Entrées / Sorties du Label ignorées **
    Leave (usercontrol)

    Bref, il n'existe aucun moyen de "masquer" les event des controles enfants ? A moins que je n'ai pas compris quelquechose ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    je pense que tu peux toi meme surcharger les event Mouseenter, Mouse Leave
    et faire en sorte que quand tu prends un mouseLeave,
    tu vas "reellement" le propager au proprio du userControl uniquement si la souris n'est pas dans la zone de ton userControl

    Un poste existe il y a environ 2 mois ou l'on expliquait comment eviter ce genre de péripéties

  5. #5
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 86
    Points
    86
    Par défaut
    Ok merci. Ca confirme simplement ce que je craignais : il n'y a aucune solution technique élégante à ce problème. Etonnant quand on voit la facilité avec laquelle on peut créer des user controls en .Net

    Merci encore.

Discussions similaires

  1. [Gestion des events] trop d'event dans ma queue
    Par hidewak dans le forum Allegro
    Réponses: 4
    Dernier message: 14/05/2013, 11h30
  2. gestion des events dans MFC
    Par subzero01 dans le forum MFC
    Réponses: 2
    Dernier message: 04/07/2008, 15h37
  3. Gestion des évennements dans un UserControl
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 3
    Dernier message: 20/06/2008, 10h48
  4. Gestion des headers dans un Makefile
    Par Weren dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/11/2004, 10h44
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo