2009-08-27 12 views
130

Mam niektóre formanty, które chciałbym wyświetlić ToolTip dla gdy mysz jest najechana nad nim. Jak mogę to zrobić? Chciałbym wiedzieć, jak to zrobić poprawnie w kodzie, ale także w projektancie (w przyborniku jest komponent ToolTip, ale nie całkiem ... rozumiem).C#: Jak dodać etykietę narzędzi do formantu?

Nie zdziwiłbym się, gdyby to był duplikat, ale mogę znaleźć tylko pytania dotyczące bardziej zaawansowanych, konkretnych scenariuszy. Chciałbym poznać podstawy.

+0

Możliwe duplikat [Wyświetlanie podpowiedzi na najechania myszą tekstu] (http://stackoverflow.com/questions/873175/displaying-tooltip-on-mouse-hover-of-a -text) –

+0

Powiązane i jeszcze starsze (dotyczy ogólnie środowiska .NET): https://stackoverflow.com/questions/168550/display-a-tooltip-over-a-button-using-windows-forms –

Odpowiedz

168

Here jest Twój artykuł, by to zrobić z kodem

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

nie ma znaczenia, czy zmienna 'toolTip1' nie mieści się w zasięgu? – Svish

+0

Cóż, ma to znaczenie.Lepiej uczynić go członkiem klasy, jeśli chcesz nim zarządzać z innej funkcji. –

+1

Co powiesz na jedną statyczną "etykietkę narzędzi" dla wszystkich twoich formularzy? – Svish

111

przeciągnąć kontrolę podpowiedzi z przybornika na formularzu. Nie musisz podawać jej żadnych właściwości poza nazwą. Następnie we właściwościach kontrolki, w której chcesz mieć etykietkę narzędzia, poszukaj nowej właściwości z nazwą właśnie dodanej formuły podpowiedzi. Domyślnie wyświetla etykietę narzędzia, gdy kursor unosi kontrolkę.

+1

To bardzo fajna odpowiedź. Prostota jest kluczem. –

+36

Upewnij się, że kiedy to robisz (np. O 2 w nocy), używasz kontrolki ToolTip, a nie formantu ToolStrip. –

+1

Dzięki tej odpowiedzi, dodanie do etykiety pojedynczej etykiety narzędzia daje wszystkim formantom w formularzu własną etykietkę. – SAm

34
  1. Dodaj składnik ToolTip do formularza
  2. Wybierz jedną z kontroli, które mają podpowiedź dla
  3. Otwórz siatki właściwość (F4), na liście znajdą właściwość o nazwie "ToolTip na toolTip1" (lub coś podobnego). Ustaw żądany tekst etykiety narzędzia dla tej właściwości.
  4. Powtórz 2-3 dla pozostałych elementów sterujących
  5. Gotowe.

Sztuką jest to, że kontrola etykietka jest kontrola extender, co oznacza, że ​​będzie ona rozszerzyć zestaw właściwości dla innych kontroli na formularzu. Za kulisami osiąga się to poprzez generowanie kodu, jak w odpowiedzi Svetlozara. Istnieją inne kontrolki działające w ten sam sposób (takie jak HelpProvider).

+1

Więc możesz używać tej samej etykiety narzędziowej dla wielu kontrolek z różnymi tekstami? – Svish

+0

@Svish: tak, to jest cel kontroli nad extenderami. –

+0

Czy można go używać również do kontroli użytkownika i formularzy? Podobnie jak w przypadku tworzenia statycznej etykiety narzędzi ze standardowymi wartościami właściwości. Czy może to być uznane za złą praktykę? – Svish

-2

Wystarczy subskrybować wydarzenie ToolTipTextTeeded kontrolki i znacznie ułatwić zwrócenie e.TooltipText.

+4

Nie sądzę, że jest to standardowe zdarzenie sterujące WinForm. – Dan7

5

Etykietka narzędzi w języku C# jest bardzo łatwa do dodania do prawie wszystkich elementów sterujących interfejsu użytkownika. Nie musisz dodawać do tego żadnego zdarzenia MouseHover.

To jak to zrobić it-

  1. Dodaj obiekt ToolTip do formularza. Jeden obiekt wystarcza na cały formularz. ToolTip toolTip = new ToolTip();

  2. Dodaj kontrolkę do podpowiedzi z żądanym tekstem.

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

Powiązane problemy