0

我在我的 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> ";
}

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

4

2 回答 2

1

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

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

于 2012-03-09T11:25:04.807 回答
0

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

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

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

于 2012-03-11T18:06:04.090 回答