173 votes

Comment ajouter un ToolTip à un contrôle ?

Je voudrais afficher un ToolTip pour le passage de la souris sur un contrôle.

Comment créer une infobulle dans le code, mais aussi dans le designer ?

0 votes

0 votes

Relié, et plus ancien encore (s'applique à .NET en général) : stackoverflow.com/questions/168550/

229voto

Svetlozar Angelov Points 10583

Ici est votre article pour le faire avec le 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");
}

5 votes

Donc je suppose que ça n'a pas d'importance si le toolTip1 la variable sort du champ d'application ?

0 votes

Eh bien, ça compte. Il est préférable de le rendre membre de la classe, si vous voulez le gérer à partir d'une autre fonction

2 votes

Qu'en est-il d'un statique ToolTip pour tous vos formulaires ?

155voto

JYelton Points 14014

Faites glisser un contrôle d'infobulle de la boîte à outils sur votre formulaire. Vous n'avez pas vraiment besoin de lui donner d'autres propriétés qu'un nom. Ensuite, dans les propriétés du contrôle sur lequel vous souhaitez avoir une infobulle, recherchez une nouvelle propriété portant le nom du contrôle d'infobulle que vous venez d'ajouter. Par défaut, il vous donnera une info-bulle lorsque le curseur survolera le contrôle.

70 votes

Assurez-vous que lorsque vous faites cela (comme à 2 heures du matin), vous utilisez un contrôle ToolTip et non un contrôle ToolStrip.

6 votes

Avec cette réponse, l'ajout d'une seule infobulle au winform donne à tous les contrôles du formulaire leur propre infobulle.

1 votes

Puissant dans sa simplicité, assurez-vous simplement de le déposer sur la bonne commande et non sur celle d'à côté (comme à 2 heures du matin).

48voto

Fredrik Mörk Points 85694
  1. Ajouter un composant ToolTip à votre formulaire
  2. Sélectionnez l'un des contrôles pour lesquels vous souhaitez obtenir une info-bulle.
  3. Ouvrez la grille de propriétés ( F4 ), dans la liste vous trouverez une propriété appelée "ToolTip on toolTip1" (ou quelque chose de similaire). Définissez le texte de l'info-bulle souhaité sur cette propriété.
  4. Répétez les étapes 2-3 pour les autres contrôles
  5. C'est fait.

L'astuce ici est que le contrôle ToolTip est une contrôle de l'extension ce qui signifie qu'il étendra l'ensemble des propriétés de l'option autres contrôles sur le formulaire. En coulisses, cela se fait en générant du code comme dans la réponse de Svetlozar. Il existe d'autres contrôles fonctionnant de la même manière (tels que les contrôles de type HelpProvider ).

1 votes

Vous pouvez donc utiliser le même ToolTip pour plusieurs contrôles avec des textes différents ?

0 votes

@Svish : oui, c'est le but des contrôles d'extension.

0 votes

Peut-on l'utiliser également pour les contrôles d'utilisateur et les formulaires ? Par exemple, si vous créez un ToolTip statique avec vos valeurs de propriété standard. Ou bien cela serait-il considéré comme une mauvaise pratique ?

8voto

OopsDev Points 1

Le ToolTip en C# est très facile à ajouter à presque tous les contrôles de l'interface utilisateur. Vous n'avez pas besoin d'ajouter un événement MouseHover pour cela.

C'est comme ça qu'il faut faire.

  1. Ajoutez un objet ToolTip à votre formulaire. Un seul objet suffit pour l'ensemble du formulaire. ToolTip toolTip = new ToolTip();

  2. Ajoutez le contrôle à l'infobulle avec le texte souhaité.

    toolTip.SetToolTip(Button1,"Click here");

-3voto

fredv Points 3

Il suffit de s'abonner à l'événement ToolTipTextNeeded du contrôle et de renvoyer e.TooltipText, ce qui est beaucoup plus simple.

7 votes

Je ne pense pas que ce soit un événement standard de contrôle WinForm.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X