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 :

[VS 2005] MouseEnter/MouseLeave & child controls


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut [VS 2005] MouseEnter/MouseLeave & child controls
    Hello,

    Je me suis pris la tête toute la journée sur un truc à priori tout con alors je viens chercher votre aide.

    Voilà ce que j'essaie de faire :

    Sur une form, j'ai mis un panel. J'ai position le panel de façon à ce qu'on voit que le bord gauche de celui-ci (il déborde à droite de la forme donc).

    Le but est que quand la souris entre dedans, celui-ci se déplace vers la gauche pour avoir l'air de se dérouler. Et bien sûr quand la souris en sors, qu'il se replie.

    En soit, c'est archi simple. Le problème c'est que l'event MouseLeave du panel se déclenche quand la souris entre dans un des contrôles enfants du panel. Et du coup, l'event MouseEnter du panel se déclenche quand la souris sort d'un contrôle enfant du panel.

    Comment éviter ses déclenchement qui, dans mon cas, sont intempestifs ?

    J'ai cherché toute la journée... J'ai joué avec la position de la souris et la propriété bounds du panel pour voir si la souris est dedans ou pas mais rien n'y fait.

    Je suis persuadé que c'est presque trivial mais je bloque...

    Help please

    Griftou.

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Par défaut Position de la souris...
    Bonjour Griftou...

    J'ai pensé à ceci comme solution: utilise les coordonnées de la souris pour verifier si tu es réellement sorti de la zone du "Panel":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Panel1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Panel1.MouseEnter
            Me.Panel1.Location = (New Point(129, 25))
    End Sub
     
    Private Sub Panel1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave 
        Dim pt As Point = Me.PointToClient(New Point(Me.MousePosition.X, Me.MousePosition.Y))
        'le test
        If (pt.X > (Me.Panel1.Width + Me.Panel1.Location.X)) _
        Or (pt.X < Me.Panel1.Location.X) Or (pt.Y > (Me.Panel1.Height + Me.Panel1.Location.Y)) _
        Or (pt.Y < Me.Panel1.Location.Y) Then
            Me.Panel1.Location = (New Point(685, 25))
        End If
     
    End Sub
    j' espère que ça fera l'affaire

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Merci pour ta réponse Bobocom1.

    J'ai malheureusement déjà essayer cette solution. Et il faut dire que cela marche nickel pour ce qui est du fait de "quitter" le panel pour entrer dans le control enfant mais alors ça créait des merdes au niveau de la sortie du panel. Il ne se repliait plus qu'une fois sur 3 en moyenne et je n'ai vraiment aucune idée du pourquoi.

    Finalement, j'ai "résolu" mon problème en repliant le panel sur l'event MouseEnter du DataGridView qui se trouve dessous. Ca fonctionne nickel mais je ne trouve pas ça propre.

    Donc si jamais il te venait, ou à quelqu'un d'autre bien sûr, une autre idée, je suis preneur.

    Il n'y a pas une propriété qui implémente ce genre de truc automatiquement?

    Griftou.

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Peut-être peux tu, pour faire plus propre, utiliser un Application.AddMessageFilter que tu positionnes à l'entrée de la souris dans le panel.

    Cela te permettra de gérer "à la main" la sortie du panel.

    Cdt.

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ah ?

    Je vais regarder ce que ça donne de côté là.

    Je ne connais pas le AddMessageFilter donc je m'informe, je teste et je donne un feedback.

    Merci :-)

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Y aurait pas un tuto bien foutu ?

    Pcq j'ai regardé dans la MSDN et honnêtement, j'ai pas pigé grand chose :-/

    Enfin j'vais toujours aller voir dans le cours de Lasserre si y a qqch sur le sujet mais j'ai l'impression que c'est trop poussé pour ce tuto là.

Discussions similaires

  1. mouseenter/mouseleave & sélecteur
    Par gitney dans le forum jQuery
    Réponses: 4
    Dernier message: 15/10/2013, 17h04
  2. Menu déroulant mouseenter mouseleave
    Par dreadstock dans le forum jQuery
    Réponses: 4
    Dernier message: 25/10/2011, 11h17
  3. [MooTools] mouseenter, mouseleave et chain
    Par Damouille dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 30/07/2010, 10h24
  4. [SQL server 2005] Problème rolap et hierechie parent-child
    Par Thom_ dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/03/2006, 13h46

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