我在Winforms应用程序中使用Infrastics NetAdvantage 2010。这是用于在按钮的鼠标悬停上加载自定义工具提示的代码。
private void button1_MouseHover(object sender, EventArgs e)
{
UltraToolTipInfo toolTipInfo = ultraToolTipManager1.GetUltraToolTip(button1);
toolTipInfo.ToolTipTextStyle = ToolTipTextStyle.Formatted;
ultraToolTipManager1.DisplayStyle = ToolTipDisplayStyle.Office2007;
toolTipInfo.ToolTipTextFormatted = "" +
"<p style='color:Black; font-family:tahoma;'>Details:</p>" +
"<p style='color:Black; font-family:tahoma;'>Name: <t style='color:Black; font-family:tahoma; font-weight:bold;'>Sandeep</t></p>" +
"<t style='color:Black; font-family:tahoma;'>Profile: <t style='color:Black; font-family:tahoma; font-weight:bold;'>Developer</t></t> ";
}
但是当我运行这个程序时,鼠标悬停时工具提示不会第一次出现。从第二次开始。这里可能有什么问题?
由于我的评论已经起作用,将把它作为一个答案。
更改代码,使工具提示加载在MouseEnter事件而不是MouseHover事件上。(请注意,您可能需要关闭鼠标离开事件的工具提示。
UltraTooltipManager使用控件的MouseMove事件来确定何时显示工具提示。鼠标悬停发生在鼠标移动之后,这就是为什么你在第一次鼠标悬停时没有看到工具提示,因为鼠标移动已经发生了。您可以在MSDN上查看有关鼠标事件顺序的更多详细信息:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove.aspx
有两种解决方案可以纠正这一问题:1.将你的逻辑移动到鼠标输入,因为这将在鼠标移动之前发生,你会得到你想要的行为。2.在工具提示中应显示的内容发生变化时设置工具提示。
哪种方法更好取决于用户将鼠标悬停在控件上的频率以及对动态工具提示中的信息进行更改的频率。