27

如何以编程方式使控件的工具提示显示在 Winforms 应用程序中,而无需将鼠标悬停在控件上?(必要时可以使用 P/Invoke)。

4

6 回答 6

28

如果你Tooltip在表单上使用控件,你可以这样做:

ToolTip1.Show("Text to display", Control)

ToolTip 控件的“显示”方法的MSDN 文档对此有所有不同的变体以及如何使用它们。

于 2008-09-15T14:51:27.530 回答
10
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello");

工具提示将设置在控件“textBox1”上。

在这里阅读:

http://msdn.microsoft.com/en-us/library/aa288412.aspx

于 2008-09-15T14:38:28.950 回答
1

首先,您需要将工具提示控件添加到表单第二个将工具提示控件附加到您希望工具提示显示的某个控件(MyControl)第三个这样做: Tooltip1.Show("My ToolTip Text", MyControl)

于 2009-10-30T09:52:43.880 回答
1

凯文,如果您想创建自己的气球,请阅读此链接:任务 3:显示气球提示。提到了具有 TOOLTIPS_CLASS 常量的 NativeMethods 类。

于 2012-08-23T14:46:58.317 回答
0

这是我使用的代码:

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 ); 
  }
}

调用 CreateToolTip 函数为某个控件创建一个工具提示。

于 2008-09-15T14:37:00.997 回答
0

如果您为整个表单创建私有变量,您将能够调用 sub 并调整初始延迟。

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       
于 2013-04-08T19:34:04.193 回答