Reputation: 3368
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).
Upvotes: 28
Views: 39419
Reputation: 1963
After trying @Keithius's code and finding that the tip showed with mouse-over once the OnClick
code had run, I ended up doing this:
Button Click
event:
ToolTip1.Show("Text to display", Control);
Button MouseLeave
event:
ToolTip1.Hide(Control);
But then I found that if I specified a position - using either explicit x
and y
co-ords or a Point
, it worked as expected:
Button Click
event:
ToolTip1.Show("Text to display", Control, Control.Width+20, 0, 2000);
or
ToolTip1.Show("Text to display", Control, new Point(Control.Width+20, 0), 2000);
This is possibly due to the modality of some overloads as mentioned in the Microsoft doco.
Upvotes: 1
Reputation: 1
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
Upvotes: 0
Reputation: 80
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.
Upvotes: 1
Reputation: 51
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)
Upvotes: 1
Reputation: 1124
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.
Upvotes: 29
Reputation: 73703
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
Upvotes: 10
Reputation: 55
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.
Upvotes: 0