在winforms应用程序中以编程方式显示工具提示

在winforms应用程序中以编程方式显示工具提示,winforms,Winforms,如何通过编程使控件的工具提示在Winforms应用程序中显示,而无需将鼠标悬停在控件上?(如有必要,P/Invoke可以) 这是我使用的代码: static HWND hwndToolTip = NULL; void CreateToolTip( HWND hWndControl, TCHAR *tipText ) { BOOL success; if( hwndToolTip == NULL ) { hwndToolTip = CreateWindow( TO

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

这是我使用的代码:

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函数为某个控件创建工具提示

System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello");
工具提示将设置在控件“textBox1”上

请在此阅读:


如果您使用表单上的
工具提示
控件,您可以这样做:

ToolTip1.Show(“要显示的文本”,控件)


有所有不同的变体以及如何使用它们。

首先,您需要将工具提示控件添加到表单中 其次,将工具提示控件附加到希望工具提示显示在其上的某个控件(MyControl) 第三,这样做:
工具提示1.Show(“我的工具提示文本”,MyControl)

Kevin,如果您想创建自己的引出序号,请阅读以下链接:。前面提到的NativeMethods类带有TOOLTIPS_class常量。

如果您为整个表单创建私有变量,您将能够为调用sub并调整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       

我认为这是不对的。如果这样做,则工具提示将显示,但每次将鼠标移到控件上后,工具提示也将显示。有没有办法只在命令上显示一次工具提示?没有,使用“show”命令只显示一次工具提示。要使工具提示在鼠标位于控件上方时显示,您需要设置控件本身的“ToolTipText”属性。Jordan S是正确的。Show方法设置与指定控件关联的工具提示文本。如何获取对TOOLTIPS_类的引用,我得到了HWND、TCHAR和更多的编译器错误。这些似乎没有在.Net中定义。我必须添加一个推荐人吗?