L'info-bulle est en fait un contrôle WinForms qui gère l'affichage des info-bulles pour plusieurs éléments sur un même formulaire.
Supposons que votre bouton s'appelle MyButton.
Ajoutez un contrôle Info-bulle (sous Contrôles communs dans la boîte à outils Windows Forms) à votre formulaire.
Donnez-lui un nom - dites MyToolTip
Définissez la propriété "Info-bulle sur MyToolTip" de MyButton (sous Divers dans la grille de propriétés du bouton) sur le texte qui doit apparaître lorsque vous passez la souris dessus.
L'info-bulle apparaît automatiquement lorsque le curseur survole le bouton, mais si vous devez l'afficher par programme, appelez
MyToolTip.Show("Tooltip text goes here",MyButton)
dans votre code pour afficher l'info-bulle, et MyToolTip.Hide (MyButton) pour le faire disparaître à nouveau.
bien, mais une question: si j'ai plus d'un bouton dans un formulaire, j'ai besoin de plus d'info-bulle ou je peux définir plusieurs descriptions et boutons pour la même info-bulle?
ghiboz
8
Votre formulaire n'a besoin que d'un seul contrôle ToolTip - chaque bouton peut avoir un texte d'aide différent (c'est pourquoi la "Tooltip on MyToolTip" est une propriété du contrôle associé, pas du contrôle ToolTip lui-même)
Dylan Beattie
2
Dans le cas le plus simple, ajouter l'info-bulle au formulaire est la meilleure chose à faire. Problème: au moment de la conception d'un contrôle personnalisé, vous n'avez aucune référence au formulaire parent. Solution: créez un objet info-bulle dans le contrôle. Ne pensez pas à l'objet info-bulle comme nécessairement attaché au formulaire.
Stéphane Gourichon
93
Utilisation du concepteur de formulaires:
Faites glisser le contrôle Info-bulle de la boîte à outils sur le formulaire.
Sélectionnez les propriétés du contrôle sur lequel vous souhaitez que l'infobulle apparaisse.
Recherchez la propriété 'ToolTip on toolTip1' (le nom peut ne pas être toolTip1 si vous avez changé son nom par défaut).
Définissez le texte de la propriété sur le texte de l'info-bulle que vous souhaitez afficher.
Vous pouvez également définir l'info-bulle par programmation en utilisant l'appel suivant:
Une info-bulle personnalisée peut également être utilisée dans le cas où un formatage est requis pour le message d'info-bulle. Cela peut être créé en mettant en forme le formulaire personnalisé et en l'utilisant comme boîte de dialogue d'info-bulle sur l'événement de survol de la souris du contrôle. Veuillez vérifier le lien suivant pour plus de détails -
Stockage de texte paresseux et compact dans la propriété Tag
Si vous êtes un peu paresseux et n'utilisez pas la propriété Tag des contrôles pour autre chose, vous pouvez l'utiliser pour stocker le texte de l'info-bulle et affecter des gestionnaires d' événements MouseHover à tous ces contrôles en une seule fois comme ceci:
Dans ce cas, tous les boutons ayant une chaîne dans la propriété Tag reçoivent un événement MouseHover . Pour le garder compact, l' événement MouseHover est défini en ligne à l'aide d'une expression lambda. Dans l'éventualité où le bouton plané aura son balise texte attribué à l'info - bulle et affiché.
Le framework .NET fournit une classe ToolTip. Ajoutez-en un à votre formulaire, puis lors de l'événement MouseHover pour chaque élément pour lequel vous souhaitez une info-bulle, procédez comme suit:
Bien que cet extrait de code puisse résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question des lecteurs à l'avenir et que ces personnes ne connaissent peut-être pas les raisons de votre suggestion de code.
Bien sûr, il suffit de gérer l'événement mousehover et de lui indiquer d'afficher une info-bulle. t est une info-bulle définie soit dans les globales, soit dans le constructeur en utilisant:
Je pense que vous avez été rejeté parce que ce n'est pas la façon d'utiliser les contrôles ToolTip dans Windows Forms. Vous n'avez besoin que d'un seul contrôle sur le formulaire et il montre les conseils pour tous les contrôles. Voir le code dans les autres réponses.
Julian Melville
1
Je suppose que l'explication ne correspond pas au code, où dans l'explication j'ai dit l'afficher et dans le code je l'ai également initialisé. Ma faute. : P
Fry
2
@ julianz En fait, cela fonctionne bien pour avoir des info-bulles spécialisées qui peuvent être dynamiques si vous le souhaitez en fonction de l'état (moins bien sûr la création - pardonnez-moi, j'essayais simplement de tout ranger dans un bloc.) Quant aux autres réponses sur un veine similaire ... yshuditelu et Dylan Beattie étaient similaires bien que sans l'instanciation.
Réponses:
L'info-bulle est en fait un contrôle WinForms qui gère l'affichage des info-bulles pour plusieurs éléments sur un même formulaire.
Supposons que votre bouton s'appelle MyButton.
L'info-bulle apparaît automatiquement lorsque le curseur survole le bouton, mais si vous devez l'afficher par programme, appelez
dans votre code pour afficher l'info-bulle, et MyToolTip.Hide (MyButton) pour le faire disparaître à nouveau.
la source
Utilisation du concepteur de formulaires:
Vous pouvez également définir l'info-bulle par programmation en utilisant l'appel suivant:
la source
Vous pouvez utiliser la classe ToolTip:
Création d'une info-bulle pour un contrôle
Exemple:
la source
new ToolTip().SetToolTip(this.Button1, "Hello");
Pour l'infobulle par défaut, cela peut être utilisé -
Une info-bulle personnalisée peut également être utilisée dans le cas où un formatage est requis pour le message d'info-bulle. Cela peut être créé en mettant en forme le formulaire personnalisé et en l'utilisant comme boîte de dialogue d'info-bulle sur l'événement de survol de la souris du contrôle. Veuillez vérifier le lien suivant pour plus de détails -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
la source
Stockage de texte paresseux et compact dans la propriété Tag
Si vous êtes un peu paresseux et n'utilisez pas la propriété Tag des contrôles pour autre chose, vous pouvez l'utiliser pour stocker le texte de l'info-bulle et affecter des gestionnaires d' événements MouseHover à tous ces contrôles en une seule fois comme ceci:
Dans ce cas, tous les boutons ayant une chaîne dans la propriété Tag reçoivent un événement MouseHover . Pour le garder compact, l' événement MouseHover est défini en ligne à l'aide d'une expression lambda. Dans l'éventualité où le bouton plané aura son balise texte attribué à l'info - bulle et affiché.
la source
Le framework .NET fournit une classe ToolTip. Ajoutez-en un à votre formulaire, puis lors de l'événement MouseHover pour chaque élément pour lequel vous souhaitez une info-bulle, procédez comme suit:
la source
la source
Sur la base de la réponse de DaveK , j'ai créé une extension de contrôle:
Ensuite, vous pouvez définir l'info-bulle pour n'importe quel contrôle avec une seule ligne:
la source
Bien sûr, il suffit de gérer l'événement mousehover et de lui indiquer d'afficher une info-bulle. t est une info-bulle définie soit dans les globales, soit dans le constructeur en utilisant:
puis le gestionnaire d'événements:
la source