gpt4 book ai didi

c# - Winform ToolTip位置设置

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:31 25 4
gpt4 key购买 nike

我想知道是否有可能通过 MouseHover 事件在空桌面上的固定点中以某种方式在应用程序窗体之外定位 ToolTip 弹出窗口,当然不确定该事件是否对 ToolTip 有用。或者任何其他可能的方式

我不是在问如何显示另一种形式作为这个目标的一个选项。

最佳答案

您可以使用以下任一选项:

  1. 自己处理显示和隐藏 ToolTip。您可以使用 MouseHover 在所需位置显示 ToolTip 并使用 MouseLeave 隐藏它。

  2. 使用 MoveWindow Windows API 方法,强制工具提示显示在特定位置而不是默认位置。

选项 1

您可以处理控件的 MouseHoverMouseLeave 事件,并以这种方式在桌面窗口的特定位置显示 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);
}

选项 2

作为我之前为 align right edges of a control and ToolTip 提供的另一个选项, 你可以设置 OwnerDraw ToolTip 的属性设置为 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);
}

关于c# - Winform ToolTip位置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com