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 :

Tooltip et hauteur du curseur.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Par défaut Tooltip et hauteur du curseur.
    Bonjour,
    J'ai besoin d'utiliser la méthode ToolTip.Show(String, IWin32Window, Int32, Int32). Je lui passe les coordonnées du curseur, mais du coup la bulle apparait masquée en partie par le curseur ce qui n'est pas le cas lors de l'utilisation de SetToolTip où la bulle apparait sous le curseur. Je me suis dit qu'à cela ne tienne, je vais ajouter la hauteur du curseur (Cursor.Size.Height) au dernier paramètre de Show. Contrairement à mes attentes la bulle est bien plus basse que nécessaire. J'ai pensé à un problème d'unités de mesure, mais j'ai passé en revue de nombreuses propriétés (DpiY, PageScale, PageUnit, ...) et rien ne m'a permis de trouver la bonne valeur. J'ai mis un bout de code de test pour donner un exemple, le bouton 1 est configuré avec SetToolTip, le second avec Show. J'ai commenté la ligne qui ajoute la hauteur du curseur.
    Merci pour vos éventuels éclaircissements...


    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
     
    public partial class TestInfoBulle : Form
        {
            public TestInfoBulle()
            {
                InitializeComponent();
                toolTip1.SetToolTip(button1, "Test");
            }
     
            private void button2_MouseMove(object sender, MouseEventArgs e)
            {
                toolTip1.Show("Test", button2, e.X, e.Y);
                //toolTip1.Show("Test", button2, e.X, e.Y + button2.Cursor.Size.Height);
            }
     
            private void button2_MouseLeave(object sender, EventArgs e)
            {
                toolTip1.Hide(button2);
            }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    c'est parce que Cursor.Size indique la taille totale du curseur, pas seulement la partie visible... je vois pas trop de solution à part fixer en dur le décalage du ToolTip

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Par défaut
    Merci pour la réponse, mais alors comment se fait-il que l'infobulle apparaisse juste sous le curseur par défaut ? J'ai fait un test en changeant les propriétés de la souris dans Vista, j'ai choisi "très grande police", et l'infobulle était toujours bien placée par défaut avec SetToolTip. Soit .Net arrive à savoir quelle est la partie visible du curseur, soit ça ne vient pas de là...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    je sais pas trop comment il se débrouille... il faudrait regarder le code de ToolTip avec Reflector pour regarder comment il fait

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Par défaut
    J'ai regardé le code avec Reflector (je ne connaissais pas ce logiciel, merci pour l'info), mais c'est vraiment touffu, je n'arrive pas à trouver à quel endroit est fixée la position par défaut dans SetToolTip. J'ai aussi remarqué que Cursor.Size renvoie les mêmes valeurs lorsque la taille du curseur change dans les propriétés de la souris dans Vista, j'ai toujours 32 x 32. De plus en plus nébuleux...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Alors... j'étais en train de chercher des choses compliquées à coup de P/Invoke, et j'ai réalisé un truc... En fait, le masque du curseur par défaut ressemble à ça :


    Donc la pointe de la flèche (le "hotspot" du curseur) n'est pas tout en haut à gauche... elle est décalée de la valeur indiquée par la propriété Cursor.HotSpot. Il faut donc faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toolTip1.Show("Test", button2, e.X, e.Y + button2.Cursor.Size.Height - button2.Cursor.HotSpot.Y);
    Et là ça marche nickel
    Images attachées Images attachées  

Discussions similaires

  1. Infobulle/Tooltip fixe et ne suive pas le curseur !
    Par nancy169 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/09/2012, 14h36
  2. Modifier la hauteur du curseur d'un INPUT text
    Par gloumouth dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 16/03/2007, 14h47
  3. addition hauteur et curseur
    Par robin des bulles dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/02/2007, 13h28
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 19h54
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 18h09

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