Jason Diller
Jason Diller

Reputation: 3368

Programmatically show tooltip in winforms application

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

Answers (7)

SteveCinq
SteveCinq

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

Bruno Poulin
Bruno Poulin

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

tretyak
tretyak

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

John
John

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

Keithius
Keithius

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

Mark Ingram
Mark Ingram

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

Mark D
Mark D

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

Related Questions