Winform ToolTip位置设置

时间:2017-03-01 15:02:36

标签: c# .net winforms tooltip

我想知道是否有可能以某种方式在使用MouseHover事件的空桌面上的固定点上找到应用程序表单外的ToolTip弹出窗口,当然如果事件对ToolTip很有用,不确定。或者任何其他方式,如果可能的话

我不是要求如何显示另一个表单作为此目标的选项。

2 个答案:

答案 0 :(得分:4)

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

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

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

  3. 选项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的{​​{1}}属性设置为ToolTip并处理控件的true事件。使用Draw Windows API方法将MoveWindow移动到所需位置:

    ToolTip

答案 1 :(得分:1)

听起来最终你想要的是一个盒子,当你将鼠标悬停在GUI上的某些特定项目上时,它会显示一些信息。您还要说您希望信息显示在固定点上。

与使用工具提示实现此目的相反,我会执行以下操作:

  1. 创建一些固定标签或文本框以显示信息并将其放在Windows窗体上的某个位置。
  2. 为鼠标悬停事件创建订阅者。
  3. 根据鼠标悬停事件中的sender(控制您正在悬停),选择要在固定位置显示的信息。
  4. 我见过人们在其他一些程序中这样做......比如,RealTerm。如果您愿意,可以尝试一下,看看在尝试此解决方案之前的感受。

    另一方面,如果您必须使用工具提示。您可以使用ToolTip.Show的重载来选择位置。