我有一个弹出控件的对话框,当控件被控制在控件上时,会显示工具提示。但是,如果我关闭该框然后重新显示它,则工具提示不起作用。这是我的一部分代码。当表单加载为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;
}
}
答案 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);