如何在当前鼠标位置设置工具提示?
我注册了热键:Ctrl + 空间。热键消息被发送到:如何在当前鼠标位置设置工具提示?
private void Hotkey_press()
{
... // I want to show tooltip "Hello" at current mouse location.
}
有什么办法来显示此提示,甚至鼠标犯规指向任何控制,这是我Window.Form1之外?
编辑:那工具提示可以显示连形式失去重心或隐藏
你想要的东西,像
ToolTip tt = new ToolTip();
IWin32Window win = this;
tt.Show("String", win, mousePosition);
凡MousePosition
可以从MouseEventArgs
通过
private SomeMouseEventHandler(object sender, MouseEventArgs e)
{
System.Drawing.Point mousePosition = e.Location;
...
}
获得
或使用
System.Drawing.Point mousePosition = Cursor.Position;
也,则可能需要设置被显示的量,ToolTip
更长的持续时间,以及只使用为Show
方法中可用的过载,tt.Show("String", win, mousePosition, 5000);
将显示工具提示5秒钟。
我希望这会有所帮助。
Tooltip tip = new ToolTip();
tip.ShowAlways = true;
tip.Show("My tooltip",this,Cursor.Position.X,Cursor.Position.Y);
http://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.showalways.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.aspx
作为this answer表明,有做到这一点没有管理办法。如果你想在你的程序没有对焦的时候显示一个工具提示控件,那么“正确”的方法是使用PInvoke Win32并使用CreateWindowEx
。 Gideon给出的上面的答案显示了一些关于如何去做的指示,但是它非常复杂。
如果您不介意使用第三方库,AutoIt提供了一种轻松创建工具提示而无需亲自处理Win32的方法。
这是一个很简单的例子演示如何使用:
//make sure AutoItX3.dll is referenced in your project
using AutoItX3Lib;
private AutoItX3 myAutoIt = new AutoItX3();
private async void ShowToolTipAtMouse(string message)
{
//default position is bottom right of mouse pointer,
//but you can set the x and y positions yourself
myAutoIt.ToolTip(message);
//call the function again with an empty argument to close
await Task.Delay(1000);
myAutoIt.ToolTip(String.Empty);
}
这将工作,只要你的程序是运行;如果它处于焦点之外或者甚至是隐藏的都没关系。缺点是你没有经常淡出动画(它只是消失)。另外,如果您需要同时使用多个工具提示,则需要具有多个AutoItX3
对象。
谢谢。它帮助我,而我的表格正在关注。如果我的Form1隐藏,不活动,则此ToolTip tt不显示。有什么方法可以显示它,即使Form1.Hide()? – Sakura 2012-08-09 14:53:40
如果窗体隐藏,则不显示“ToolTip”... – MoonKnight 2012-08-09 16:09:07
-1,因为这只有在表单处于焦点状态时才有效。此外,'MousePosition'需要转换为客户端坐标,像'this.PointToClient(MousePosition)' – Setsu 2015-03-12 21:00:14