web-dev-qa-db-fra.com

Comment ajouter une info-bulle à un contrôle?

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.

149
Svish

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");
}
197
Svetlozar Angelov

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.

137
JYelton
  1. Ajouter un composant d'info-bulle à votre formulaire
  2. Sélectionnez l'une des commandes pour lesquelles vous souhaitez 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. 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 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).

39
Fredrik Mörk

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-

  1. Ajoutez un objet info-bulle à votre formulaire. Un objet suffit pour la totalité du formulaire. ToolTip toolTip = new ToolTip();

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

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

8
OopsDev

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);
    }
}
1
log-cab.in