我註冊了熱鍵:Ctrl + 空間。熱鍵消息被髮送到:如何在當前鼠標位置設置工具提示?
private void Hotkey_press()
{
... // I want to show tooltip "Hello" at current mouse location.
}
有什麼辦法來顯示此提示,甚至鼠標犯規指向任何控制,這是我Window.Form1之外?
編輯:那工具提示可以顯示連形式失去重心或隱藏
我註冊了熱鍵: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