2009-08-27 18 views
130

Tengo algunos controles que me gustaría mostrar ToolTip cuando el mouse está sobre él. ¿Cómo puedo hacer esto? Me gustaría saber cómo hacerlo correctamente en el código, pero también en el diseñador (Hay un componente ToolTip en la caja de herramientas, pero no lo entiendo).C#: ¿Cómo agrego una información sobre herramientas a un control?

No me sorprendería que este sea un duplicado, pero solo puedo encontrar las preguntas que están en escenarios más avanzados y específicos. Me gustaría saber lo básico.

+0

Posible duplicado de [Viendo el cursor del mouse sobre herramientas de un texto] (http://stackoverflow.com/questions/873175/displaying-tooltip-on-mouse-hover-of-a -text) –

+0

Relacionado, y aún más antiguo (se aplica a .NET en general): https://stackoverflow.com/questions/168550/display-a-tooltip-over-a-button-using-windows-forms –

Respuesta

168

Here es su artículo para hacerlo con código

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

Así que ¿Supongo que no importa si la variable 'toolTip1' queda fuera del alcance? – Svish

+0

Bueno, es importante.Es mejor hacerlo miembro de la clase, si desea administrarlo desde alguna otra función .. –

+1

¿Qué tal una "Información sobre herramientas" estática para todos sus formularios? – Svish

111

Arrastre un control sobre herramientas de la caja de herramientas hasta el formulario. No necesitas darle ninguna otra propiedad más que un nombre. Luego, en las propiedades del control en el que desea tener una información sobre herramientas, busque una nueva propiedad con el nombre del control de información sobre herramientas que acaba de agregar. De forma predeterminada, le dará una información sobre herramientas cuando el cursor pase el control.

+1

Esta es una muy buena respuesta. La simplicidad es la clave. –

+36

Asegúrese de que cuando hace esto (como a las 2 a.m.) utilice un control ToolTip y no un control ToolStrip. –

+1

Con esta respuesta, al agregar solo una información sobre herramientas al formato de win, todos los controles tienen su propia información sobre herramientas. – SAm

34
  1. Añadir un componente de información sobre herramientas a su forma
  2. Seleccione uno de los controles que desea una punta de herramienta para
  3. Abrir la rejilla de propiedades (F4), en la lista se encuentra una propiedad llamada "Información sobre herramientas en toolTip1" (o algo similar). Establezca el texto de información sobre herramientas deseado en esa propiedad.
  4. Repita 2-3 para los otros controles
  5. Listo.

El truco aquí es que el control sobre herramientas es un control extensor, lo que significa que se extienda el conjunto de propiedades para otros controles en el formulario. Detrás de escena esto se logra generando código como en la respuesta de Svetlozar. Hay otros controles que funcionan de la misma manera (como el HelpProvider).

+1

¿Entonces puede usar la misma información sobre herramientas para muchos controles con textos diferentes? – Svish

+0

@Svish: sí, ese es el propósito de los controles del extensor. –

+0

¿Se puede utilizar también controles cruzados de usuario y formularios? Me gusta si creó una información sobre herramientas estática con sus valores de propiedad estándar. ¿O eso se consideraría una mala práctica? – Svish

-2

Simplemente suscríbase al evento ToolTipTextNeeded del control, y devuelva e.TooltipText, mucho más simple.

+4

No creo que sea un evento de control WinForm estándar. – Dan7

5

ToolTip en C# es muy fácil de agregar a casi todos los controles de la interfaz de usuario. No necesita agregar ningún evento MouseHover para esto.

Esta es la forma de hacerlo-

  1. añadir un objeto de información sobre herramientas al formulario. Un objeto es suficiente para toda la forma. ToolTip toolTip = new ToolTip();

  2. Agregue el control a la información sobre herramientas con el texto deseado.

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

Cuestiones relacionadas