How can I programatically cause a control\'s tooltip to show in a Winforms app without needing the mouse to hover over the control? (P/Invoke is ok if necessary).
First You need to add tooltip control to the form Second attach the tooltip control to some control you want the tooltip to show on (MyControl) Third do this: Tooltip1.Show("My ToolTip Text", MyControl)
If you create your variable private to the whole form, you will be able to call the sub for the and adjust the initialdelay.
Public Class MyForm
Private MyTooltip As New ToolTip
...
Sub ApplyToolTips
'For default
ApplyToolTips (1000)
End Sub
Sub ApplyTooltips (ByVal Delay as Integer)
MyTooltip .InitialDelay = Delay
MyTooltip.AutoPopDelay = 5000
...
MyTooltip.SetToolTip(Me.btnClose, "Close the form")
End Sub
Private Sub Btn_Click(sender As System.Object, e As System.EventArgs) Handles Btn.Click
Dim PicBox As PictureBox = CType(sender, PictureBox)
ApplyTooltips (0)
ApplyTooltips (1000)
End Sub
This is the code I use:
static HWND hwndToolTip = NULL;
void CreateToolTip( HWND hWndControl, TCHAR *tipText )
{
BOOL success;
if( hwndToolTip == NULL )
{
hwndToolTip = CreateWindow( TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL,
hInstResource,
NULL );
}
if( hwndToolTip )
{
TOOLINFO ti;
ti.cbSize = sizeof(ti);
ti.uFlags = TTF_TRANSPARENT | TTF_SUBCLASS;
ti.hwnd = hWndControl;
ti.uId = 0;
ti.hinst = NULL;
ti.lpszText = tipText;
GetClientRect( hWndControl, &ti.rect );
success = SendMessage( hwndToolTip, TTM_ADDTOOL, 0, (LPARAM) &ti );
}
}
Call CreateToolTip function to create a tool tip for a certain control.
If you are using the Tooltip
control on the form, you can do it like this:
ToolTip1.Show("Text to display", Control)
The MSDN documentation for the ToolTip control's "Show" method has all the different variations on this and how to use them.
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello");
The tooltip will be set over the control "textBox1".
Have a read here:
http://msdn.microsoft.com/en-us/library/aa288412.aspx
Kevin, if you want to create your own balloon, read this link:Task 3: Showing Balloon tips. There mentioned NativeMethods class with the TOOLTIPS_CLASS constant.