C #: Comment append une info-bulle à un contrôle?

J’ai quelques contrôles pour lesquels je voudrais afficher une ToolTipToolTip lorsque la souris passe au-dessus. Comment puis-je faire ceci? Je voudrais savoir comment le faire correctement dans le code, mais aussi dans le concepteur (il y a un composant ToolTip dans la boîte à outils, mais je ne comprends pas tout à fait).

Je ne serais pas surpris que ce soit un doublon, mais je ne peux trouver que des questions sur des scénarios plus avancés et spécifiques. Je voudrais connaître les bases.

Voici 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"); } 

Faites glisser un contrôle info-bulle de la boîte à outils sur votre formulaire. Vous n’avez pas vraiment besoin de lui donner des propriétés autres qu’un nom. Ensuite, dans les propriétés du contrôle sur lequel vous souhaitez insérer une info-bulle, recherchez une nouvelle propriété avec le nom du contrôle d’info-bulle que vous venez d’append. Il vous fournira par défaut une infobulle lorsque le curseur survole le contrôle.

  1. Ajouter un composant ToolTip à votre formulaire
  2. Sélectionnez l’une des commandes pour lesquelles vous voulez une infobulle
  3. Ouvrez la grid 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 d’info-bulle souhaité sur cette propriété.
  4. Répétez 2-3 pour les autres contrôles
  5. Terminé.

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 pour les autres contrôles du formulaire. En coulisses, ceci est réalisé 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 le HelpProvider ).

Il est très facile d’append l’info-bulle en C # à presque tous les contrôles de l’interface utilisateur. Vous n’avez pas besoin d’append d’événement MouseHover pour cela.

Voici comment faire-

  1. Ajoutez un object info-bulle à votre formulaire. Un object suffit pour la forme entière. ToolTip toolTip = new ToolTip();

  2. Ajoutez le contrôle à l’info-bulle avec le texte souhaité.

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

Je l’ai fait de cette façon: il suffit d’append l’événement à n’importe quel contrôle, de définir la balise du contrôle et d’append un conditionnel pour gérer l’info-bulle du contrôle / tag approprié.

  private void Info_MouseHover(object sender, EventArgs e) { Control senderObject = sender as Control; ssortingng hoveredControl = senderObject.Tag.ToSsortingng(); // only instantiate a tooltip if the control's tag contains data if (hoveredControl != "") { ToolTip info = new ToolTip { AutomaticDelay = 500 }; ssortingng tooltipMessage = ssortingng.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); } } 

Abonnez-vous simplement à l’événement ToolTipTextNeeded du contrôle et renvoyez eTooltipText, beaucoup plus simple.