Ultra Tooltip未在第一个Mouseover中加载

时间:2012-03-09 06:18:10

标签: c# winforms tooltip infragistics netadvantage

我在Winforms应用程序中使用Infragistics 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> ";
}

但是当我运行它时,工具提示将不会在我第一次执行鼠标悬停时出现。它从第二次开始。这可能是什么问题?

2 个答案:

答案 0 :(得分:1)

由于我的评论有效,因此将其作为答案。

更改代码,以便ToolTip加载MouseEnter事件而不是MouseHover事件。 (注意,您可能需要关闭MouseLeave事件上的工具提示。

答案 1 :(得分:0)

UltraTooltipManager使用控件的MouseMove事件来确定何时显示工具提示。鼠标悬停发生在MouseMove之后,这就是为什么在MouseMove已经发生时你没有在第一个鼠标悬停上看到工具提示的原因。您可以在MSDN上查看有关鼠标事件顺序的更多详细信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove.aspx

有两种解决方法可以解决这个问题: 1.将您的逻辑移动到MouseEnter,因为这将在MouseMove之前发生,您将获得所需的行为。 2.在工具提示中显示的内容发生变化时设置工具提示。

哪种更好的方法取决于用户鼠标悬停在控件上的频率以及动态工具提示中对信息进行更改的频率。