工具提示不会显示第二次创建表单

时间:2009-08-24 15:58:12

标签: c# winforms tooltip

我有一个弹出控件的对话框,当控件被控制在控件上时,会显示工具提示。但是,如果我关闭该框然后重新显示它,则工具提示不起作用。这是我的一部分代码。当表单加载为null时,我正在初始化tooltipOn。我做了一个跟踪和tooltip1.Show()确实被第二次调用它只是从来没有显示。知道为什么吗?

private void Panel1_MouseMove(object sender, MouseEventArgs e)
{
    Control ctrl = null;

    if (sender == Panel1)
        ctrl = ((Control)sender).GetChildAtPoint(e.Location);
    else
        ctrl = (Control)sender;

    if (ctrl != null)
    {
        if (tooltipOn != ctrl)
        {
            toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width / 2, ctrl.Height / 2);
            tooltipOn = ctrl;
        }
    }
    else
    {
        toolTip1.Hide(this);
        tooltipOn = null;
    }
}

2 个答案:

答案 0 :(得分:2)

也许是因为你无法在两个不同的控件上显示工具提示两次?

在if语句中尝试:

if (tooltipOn != ctrl)
{
    //your moving the tooltip to a different control, 
    //hide it from the other first.
    if (tooltipOn != null)
        toolTip1.Hide(tooltipOn);  

    toolTip1.Show(
        toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width / 2, ctrl.Height / 2
    );

    tooltipOn = ctrl;
}

如果这不起作用,我会尝试完全不同地创建一个完全不同的工具提示,以确保每个控件在活动期间都是自己的。

答案 1 :(得分:2)

好的......在为这个问题解决这个问题的解决方案之后,将来发现这个帖子有用的人发布在下面。为什么这是必要的超出我的范围。

更改

toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width / 2, ctrl.Height / 2);

toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width / 2, ctrl.Height / 2);
toolTip1.Hide(ctrl);
toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width / 2, ctrl.Height / 2);