您可以使用以下任一选项:
处理显示和隐藏ToolTip
你自己。您可以使用MouseHover
显示ToolTip
在所需位置并使用MouseLeave
把它藏起来。
Using MoveWindowWindows API方法,强制工具提示显示在特定位置而不是默认位置。
Option 1
你可以处理MouseHover
and MouseLeave
您控制的事件并显示ToolTip
在桌面窗口的特定位置,这样:
private void control_MouseHover(object sender, EventArgs e)
{
var control = (Control)sender;
var text = toolTip1.GetToolTip(control);
if (!string.IsNullOrEmpty(text))
toolTip1.Show(text, control, control.PointToClient(new Point(100, 100)));
}
private void control_MouseLeave(object sender, EventArgs e)
{
var control = (Control)sender;
toolTip1.Hide(control);
}
Option 2
作为我之前提供的另一个选择对齐控件和工具提示的右边缘,你可以设置OwnerDraw的财产ToolTip
to true
并处理Draw
控制和使用事件MoveWindow
Windows API 方法移动ToolTip
到所需位置:
[System.Runtime.InteropServices.DllImport("User32.dll")]
static extern bool MoveWindow(IntPtr h, int x, int y, int width, int height, bool redraw);
private void toolTip1_Draw(object sender, DrawToolTipEventArgs e) {
e.DrawBackground();
e.DrawBorder();
e.DrawText();
var t = (ToolTip)sender;
var h = t.GetType().GetProperty("Handle",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
var handle = (IntPtr)h.GetValue(t);
var location = new Point(100,100);
MoveWindow(handle, location.X, location.Y, e.Bounds.Width, e.Bounds.Height, false);
}