您可以使用以下任一选项:
处理显示和隐藏ToolTip自己的情况。您可以在所需的位置MouseHover显示ToolTip和MouseLeave隐藏。
使用MoveWindowWindows API方法,强制工具提示显示在特定位置而不是默认位置。
选项1
您可以处理MouseHover和MouseLeave你的控制(S)和显示的事件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);
}
Run Code Online (Sandbox Code Playgroud)
选项2
作为我先前提供的用于对齐控件和ToolTip的右边缘的另一个选项,您可以设置to的OwnerDraw属性并处理控件的事件,并使用Windows API方法移动到所需位置:ToolTiptrueDrawMoveWindowToolTip
[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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |