tooltiptext propiedades personalizar net form asp c# .net winforms tooltip

c# - propiedades - Agregar botón de cerrar(rojo x) a.NET ToolTip



tooltip windows form (3)

Podría intentar implementar su propia ventana de punta de herramienta anulando la existente y personalizando la función onDraw. Nunca intenté agregar un botón, pero he hecho otras personalizaciones con la información sobre herramientas antes.

1 class MyToolTip : ToolTip 2 { 3 public MyToolTip() 4 { 5 this.OwnerDraw = true; 6 this.Draw += new DrawToolTipEventHandler(OnDraw); 7 8 } 9 10 public MyToolTip(System.ComponentModel.IContainer Cont) 11 { 12 this.OwnerDraw = true; 13 this.Draw += new DrawToolTipEventHandler(OnDraw); 14 } 15 16 private void OnDraw(object sender, DrawToolTipEventArgs e) 17 { ...Code Stuff... 24 } 25 }

Estoy buscando una forma de agregar un botón de cerrar a un objeto .NET ToolTip similar al que tiene NotifyIcon. Estoy usando la información sobre herramientas como un globo de mensaje llamado programáticamente con el método Show (). Eso funciona bien, pero no hay ningún evento onclick o una forma fácil de cerrar la información sobre herramientas. Tienes que llamar al método Hide () en otro lugar de tu código y prefiero que la información sobre herramientas se cierre solo. Sé que hay varios globos de información sobre herramientas alrededor de la red que usan código administrado y no administrado para realizar esto con la API de Windows, pero prefiero quedarme en mi cómodo mundo .NET. Tengo una aplicación de terceros que llama a mi aplicación .NET y tiene bloqueos al intentar mostrar información sobre herramientas no administradas.


Puede intentar anular el método CreateParams en su implementación de la clase ToolTip ... es decir,

protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style = 0x80 | 0x40; //TTS_BALLOON & TTS_CLOSE return cp; } }


Puede subclase la clase ToolTip con su propio CreateParams que establece el estilo TTS_CLOSE:

private const int TTS_BALLOON = 0x80; private const int TTS_CLOSE = 0x40; protected override CreateParams CreateParams { get { var cp = base.CreateParams; cp.Style = TTS_BALLOON | TTS_CLOSE; return cp; } }

El estilo TTS_CLOSE también requiere el estilo TTS_BALLOON y también debe establecer la propiedad ToolTipTitle en la información sobre herramientas.

Para que este estilo funcione, debe habilitar los estilos v6 de Common Controls utilizando un manifiesto de aplicación .

Agregue un nuevo "Archivo de Manifiesto de Aplicación" y agregue lo siguiente bajo el elemento <assembly>:

<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency>

En Visual Studio 2012, al menos, este material está incluido en la plantilla predeterminada, pero está comentado, puedes descomentarlo.