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 :

Comment afficher correctement des Balloon ToolTip sur des contrôles?


Sujet :

Windows Forms

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut Comment afficher correctement des Balloon ToolTip sur des contrôles?
    Salut à tous,
    J'essaye tant bien que mal d'afficher des ToolTip avec le style Balloon sur des contrôles, par exemple une TextBox.

    Le problème c'est que, "aléatoirement", l'origine du ToolTip n'est pas bien placée.

    J'ai mis aléatoirement entre guillemets car il me semble que ce n'est que lorsque le ToolTip est affiché pour la première fois.

    Voici le code que j'utilise pour afficher le ToolTip :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Dans un constructeur
    _ttError = new ToolTip(this.components);
    _ttError.IsBalloon = true;
    _ttError.ToolTipIcon = ToolTipIcon.Error;
    _ttError.ToolTipTitle = "Incorrect value !";
     
    // Lors de l'évènement de validation d'une TextBox (this étant la TextBox)
    _ttError.Show("Please enter a valid number.", this, 5000);

    Savez-vous d'où provient le problème?

    Merci d'avance,
    Nicolas
    Images attachées Images attachées  

  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 195
    Points
    5 195
    Par défaut
    pourquoi ne pas plutot ajouter le text de ta toolTip dans TextBox.ToolTip qui doit
    apparaitre une fois ton tooltip ajouter à ta fenetre ?

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Salut The Monz,
    je ne cherche pas à faire apparaitre mon tooltip au passage de la souris mais seulement lorsque l'on valide le contrôle et que le texte saisi n'est pas correct...

  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 195
    Points
    5 195
    Par défaut
    ah ok autant pour moi alors...

    Beh, ya pas une methode dans le tooltip pour positionner exactement
    le tooltip la ou l'on veut ?

    dans le Show, tu as un show avec text, Iwin32Window,Point position

    comme ca , tu seras sur de l'endroit ou tu la mets

    le probleme peut provenir d'un soucis de reference de point
    (genre il se base sur le point(0,0) de l'ecran ou de la fenetre..

    ca pourrait etre une piste (ClientToScreen ou PointToClient ou PointToScreen)

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Amigo, ce que tu nous montre dans l'image, c'est avec le composant ErrorProvider que c'est affiché..

    bonne journée
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    The Monz > En tout logique, si j'indique au ToolTip avec quel contrôle il est associé, il devrait sélectionner lui-même la bonne position de départ.
    D'ailleurs après le premier affichage, tous les affichages se déroulent correctement...
    Je pense que j'avais déjà essayé d'indiquer la position de départ mais cela n'avait strictement rien changé.

    bossun > le composant ErrorProvider permet aussi d'afficher des tooltips?

  7. #7
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Error provider joue un peu près le meme role que le les ValidationControls de ASP.NEt

    Error provider affiche un tooltip avec un message à coté d'un cotrole qu'on choisit (Textbox par ex). Error provider affiche un objet rouge à coté du textbox et si on passe la souris dessus c'est alors que le tooltip apparait...

    faut l'essayer.. peut-etre qu'il repond à ta demande
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Je vais regarder ça de plus près.
    Par contre si ça affiche une petite icône à coté du contrôle ça ne conviendra que dans les cas de mes textbox, car j'utilise aussi des tooltips pour afficher lorsqu'il y a une erreur dans mes datagridview. Et j'ai le même problème.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Juste une idée:
    pour contrôler les format, j'utilise des maskTextBox
    et je me sers de la propriété "MaskCompleted" pour contrôler

    exemple pour le maskTextBox "mtxt_nb_heures":

    Evènement:

    this.mtxt_nb_heures.Leave += new

    procédure évènementielle appelée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.mtxt_nb_heures.Leave += new System.EventHandler(this.mtxt_nb_heures_Leave);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Contrôle du format du nombre d'heures (par rapport au masque)
            private void mtxt_nb_heures_Leave(object sender, EventArgs e)
            {
                if (!mtxt_nb_heures.MaskCompleted)
                {
                    MessageBox.Show("Le nombre d'heure comporte obligatoirement 2 chiffres (dizaine et unité), le chiffre des centaines ainsi que la partie décimale sont facultatifs\n\rEx: 152 ; 40 ; 130,5 ; 55,75 ", "Erreur de saisie");
                    mtxt_nb_heures.Focus();
                }
            }

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Salut tikam,
    Le problème n'est pas de contrôler des formats mais d'afficher un message d'erreur non bloquant.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 43
    Points
    43
    Par défaut mon utilisation des tooltip
    la différence avec toi c'est que je mets les infos du tooltip (créé et défini avec le designer) dans une procédure que j'appelle dans le constructeur (je sais que c'est important d'appeler les tootip dans le constructeur car sinon j'avais des soucis d'affichage si je les appellais en dehors, mes balloon tremblaient...;-)

    ma procédure est ultra simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Affichage infobulles 
            private void infobulle()
            {
     
                toolTip1.SetToolTip(this.txt_date_valid1, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid2, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid3, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid4, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid5, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid6, "Sélectionner la date dans la liste ");
                toolTip1.SetToolTip(this.txt_date_valid7, "Sélectionner la date dans la liste ");
     
     
            }
    c'était ma dernière idée , bonne chance

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Je crée aussi mon tooltip dans le constructeur mais ça ne change rien

  13. #13
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye en utilisant SetToolTip plutot que Show:
    http://msdn2.microsoft.com/en-us/lib...ettooltip.aspx


    A+

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Si j'utilise SetToolTip mon texte s'affichera au survol de la souris, non?
    Moi je souhaiterai seulement afficher le tooltip lorsque l'on valide la saisie.

  15. #15
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Effectivement, c'est bien vu

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 43
    Points
    43
    Par défaut effectivement
    c'est bien pour ça que je t'avais parlé du contrôle de masque, ça permet d'afficher le message après la saisie, par contre je crois que tu dois respecter le masque dans ce cas, à voir ... je n'ai pas utilisé tous les membres de ce type contrôle .y'a peut être moyen d'utiliser de façon détournée le contrôle masktext box pour arriver à tes fins

    sinon tu peux te gérer ça avec un simple messagebox peut être ...

    bonne journée

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Quand tu dis : "ça permet d'afficher le message après la saisie", ça veut dire que le tooltip associé avec SetToolTip n'est affiché qu'après la saisie et pas au survol de la souris?

    Pour ce qui est de la MessageBox, surement pas
    Si vraiment je n'arrive à rien avec mes tooltips, soit je laisserai tel quel et tant pis si la première fois ça ne s'affiche pas correctement, soit j'utiliserai un ErrorProvider lorsque c'est faisable.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 43
    Points
    43
    Par défaut explication
    Non, en fait, setToolTip déclenche effectivement la bulle au survol du contrôle
    (lorsque le pointeur de la souris s'immobilise sur le contrôle)
    c'est pourquoi en faisant un contrôle de format déclenché avec l'évènement
    mouseLeave j'ai mon message après mais c'est un messagebox, donc comme tu n'en veux pas...
    peut être que tu peux arriver à ce que tu veux en jonglant avec les méthode d'affichage manuel des tooltip (Active, Show, Hide, ShowAlways, Popup, StopTimer)
    sinon il va falloir que tu développe ta classe tooltip perso et là c'est chaud ;-)

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Pour ce qui est de la développer moi-même, je pense que je m'en passerai
    Enfin c'est quand même étonnant ce "bug", d'autant plus que ce n'est qu'au premier affichage...

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 49
    Points : 43
    Points
    43
    Par défaut après j'arrête !
    est ce que tu as essayé d'utiliser show avec ces paramètres ?
    à priori ça te permet de définir la position de façon précise

    ça me parait être une piste interessante, tiens nous au courant


    ToolTip.Show (String, IWin32Window, Point) Définit le texte info-bulle associé au contrôle spécifié, puis affiche de façon modale l'info-bulle à la position relative spécifiée.

    ToolTip.Show (String, IWin32Window, Int32, Int32) Définit le texte info-bulle associé au contrôle spécifié, puis affiche de façon modale l'info-bulle à la position relative spécifiée.

    ToolTip.Show (String, IWin32Window, Point, Int32) Définit le texte info-bulle associé au contrôle spécifié, puis affiche l'info-bulle pour la durée spécifiée à la position relative spécifiée.

    ToolTip.Show (String, IWin32Window, Int32, Int32, Int32) Définit le texte info-bulle associé au contrôle spécifié, puis affiche l'info-bulle pour la durée spécifiée à la position relative spécifiée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/11/2014, 10h45
  2. Réponses: 2
    Dernier message: 26/02/2012, 21h50
  3. Travailler sur des vues ou sur des tables, vs performance ?
    Par carjo dans le forum Administration
    Réponses: 3
    Dernier message: 06/02/2009, 13h46
  4. Comment afficher dans une combobox les driver des imprimante
    Par lassad dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/10/2005, 08h56
  5. Comment afficher chaque fiche dans la barre des taches ?
    Par HASSANAIT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 03h13

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