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

C# Discussion :

Survol d'un panel


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 256
    Par défaut Survol d'un panel
    Bonjour,

    J'ai crée un panel contenant un picturebox et deux panels qui au survol change de couleur seulement quand on passe la souris sur les labels et le pictureBox cela revient à la couleur initiale du panel ?

    Peux t on remédier à ce problème ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    montre nous ton code et on pourra t'aider.

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 256
    Par défaut
    Oui pardon, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    private void panel1_Mouse(object sender, EventArgs e)
            {
                this.Cursor = Cursors.Hand;
                panel1.BackColor = Color.AliceBlue;
            }
     
            private void panel1_MouseClick(object sender, EventArgs e)
            {
                MessageBox.Show("Autorisation incorrecte.", "Connexion", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
     
            private void panel1_MouseBye(object sender, EventArgs e)
            {
                this.Cursor = Cursors.Default;
                panel1.BackColor = Color.White;
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                this.panel1.MouseEnter += new System.EventHandler(this.panel1_Mouse);
                this.panel1.MouseLeave+= new System.EventHandler(this.panel1_MouseBye);
                this.panel1.Click += new System.EventHandler(this.panel1_MouseClick);
     
           label2.Text=@"Cet espace est uniquement 
    réservé aux membres 
    du groupe administrateur.
     
    MERCI.";
            }

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut Shypster,

    oui, c'est tout à fait normal.

    En fait, quand tu curseur entre sur un element contenu dans un panel, il n'est plus sur le panel mais sur l'element, de fait l'event MouseLeave est levé pour le panel.

    Pour pallier à ca, je vois deux solutions,

    -soit abonner en cascade les elements contenu dans le panel pour savoir sur qui est le curseur, mais suivant ce que contient ton panel, c'est tres lourd.

    -soit rajouter un test dans ton MouseLeave pour comparer la position de la souris par rapport à la surface totale (de memoire, ClientArea je crois ?) du panel, si la souris est toujours dans cette zone, c'est qu'elle est sur un controle contenu dans le panel (donc on ne fait rien), si le curseur est au dela de la zone du panel, c'est qu'il est sorti, donc tu peux modifier ton panel.

    AMHA, la deuxieme solution est bien plus simple à mettre en place car elle n'est pas dependante ni de ce qui il y a dans ce panel, ni de la profondeur des conteneurs du panel (le panel pourrait contenir un groupbox qui lui contiendrai un usercontrol etc).

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 256
    Par défaut
    Citation Envoyé par SirJulio Voir le message
    Salut Shypster,

    oui, c'est tout à fait normal.

    En fait, quand tu curseur entre sur un element contenu dans un panel, il n'est plus sur le panel mais sur l'element, de fait l'event MouseLeave est levé pour le panel.

    Pour pallier à ca, je vois deux solutions,

    -soit abonner en cascade les elements contenu dans le panel pour savoir sur qui est le curseur, mais suivant ce que contient ton panel, c'est tres lourd.

    -soit rajouter un test dans ton MouseLeave pour comparer la position de la souris par rapport à la surface totale (de memoire, ClientArea je crois ?) du panel, si la souris est toujours dans cette zone, c'est qu'elle est sur un controle contenu dans le panel (donc on ne fait rien), si le curseur est au dela de la zone du panel, c'est qu'il est sorti, donc tu peux modifier ton panel.

    AMHA, la deuxieme solution est bien plus simple à mettre en place car elle n'est pas dependante ni de ce qui il y a dans ce panel, ni de la profondeur des conteneurs du panel (le panel pourrait contenir un groupbox qui lui contiendrai un usercontrol etc).
    Merci bien je vais voir comment faire pour la seconde solution.
    ++

Discussions similaires

  1. comment acceder a un component lui meme dans un panel
    Par mimosa7 dans le forum Composants
    Réponses: 2
    Dernier message: 16/11/2003, 23h02
  2. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  3. Comment créer un bitmap à partir d'un panel ?
    Par calou34 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/08/2003, 15h06
  4. Comment faire un panel non rectangulaire?
    Par grincheux dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/05/2003, 15h47
  5. Prob, images, Panels, et form.
    Par CaptainChoc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2003, 10h08

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