Il y a des commandes sur lesquelles je voudrais afficher un ToolTip
lorsque la souris survole la souris. Comment puis-je faire ceci? Je voudrais savoir comment faire cela correctement dans le code, mais aussi dans le concepteur (il y a un composant ToolTip
dans la boîte à outils, mais je ne l'obtiens pas très bien ..).
Je ne serais pas surpris qu'il s'agisse d'un doublon, mais je ne peux que trouver des questions qui concernent des scénarios plus avancés et spécifiques. J'aimerais connaître les bases.
Ici est votre article pour le faire avec du code
private void Form1_Load(object sender, System.EventArgs e)
{
// Create the ToolTip and associate with the Form container.
ToolTip toolTip1 = new ToolTip();
// Set up the delays for the ToolTip.
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
// Force the ToolTip text to be displayed whether or not the form is active.
toolTip1.ShowAlways = true;
// Set up the ToolTip text for the Button and Checkbox.
toolTip1.SetToolTip(this.button1, "My button1");
toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}
Faites glisser un contrôle d'info-bulle de la boîte à outils vers votre formulaire. Vous n'avez pas vraiment besoin de lui attribuer une propriété autre qu'un nom. Ensuite, dans les propriétés du contrôle sur lequel vous souhaitez afficher une info-bulle, recherchez une nouvelle propriété portant le nom du contrôle d’info-bulle que vous venez d’ajouter. Il vous donnera par défaut une info-bulle lorsque le curseur survole le contrôle.
L'astuce ici est que le contrôle ToolTip est un contrôle d'extendeur, ce qui signifie qu'il étendra l'ensemble des propriétés de autres contrôles sur le formulaire. En coulisse, ceci est réalisé en générant du code comme dans la réponse de Svetlozar. Il y a d'autres contrôles qui fonctionnent de la même manière (comme le HelpProvider
).
Les info-bulles en C # sont très faciles à ajouter à presque tous les contrôles de l'interface utilisateur. Vous n'avez pas besoin d'ajouter un événement MouseHover pour cela.
Voici comment le faire-
Ajoutez un objet info-bulle à votre formulaire. Un objet suffit pour la totalité du formulaire. ToolTip toolTip = new ToolTip();
Ajoutez le contrôle à l'info-bulle avec le texte souhaité.
toolTip.SetToolTip(Button1,"Click here");
Je l'ai fait ainsi: ajoutez simplement l'événement à n'importe quel contrôle, définissez la balise du contrôle et ajoutez une condition pour gérer l'info-bulle du contrôle/tag approprié.
private void Info_MouseHover(object sender, EventArgs e)
{
Control senderObject = sender as Control;
string hoveredControl = senderObject.Tag.ToString();
// only instantiate a tooltip if the control's tag contains data
if (hoveredControl != "")
{
ToolTip info = new ToolTip
{
AutomaticDelay = 500
};
string tooltipMessage = string.Empty;
// add all conditionals here to modify message based on the tag
// of the hovered control
if (hoveredControl == "save button")
{
tooltipMessage = "This button will save stuff.";
}
info.SetToolTip(senderObject, tooltipMessage);
}
}