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> ";
}

しかし、これを実行すると、初めてマウス ホバーを行ったときにツールチップが表示されません。2回目から出始めます。ここで何が問題になる可能性がありますか?

4

2 に答える 2

1

私のコメントがうまくいったので、答えとしてそれを含めます。

ツールチップがMouseHoverイベントではなくMouseEnterイベントに読み込まれるようにコードを変更します。(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

これを修正するには、次の2つの解決策があります。1。ロジックをMouseEnterに移動します。これは、MouseMoveの前に行われ、希望する動作が得られます。2.ツールチップの表示内容が変わるときにツールチップを設定します。

どちらがより良いアプローチであるかは、ユーザーがコントロールの上にマウスを置く頻度と、動的ツールチップの情報に変更が加えられる頻度によって異なります。

于 2012-03-11T18:06:04.090 に答える