1

ShowAlwaysプロパティがtrueに設定されたツールチップがあります。

ツールチップを表示するコントロール(この場合はLinkLabels)に<name of my Tooltip、文字列を期待する「ToolTipon>」プロパティがあることがわかります。

ただし、私のツールチップは5つのLinkLabel間で共有されており、どちらにカーソルを合わせるかによって異なるはずです。

動作する共有クリックイベントがあります。

private void linkLabelPlatypus1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    int Platypus = 1;
    LinkLabel ll = null;
    if (sender is LinkLabel)
    {
        ll = sender as LinkLabel;
    }
    if (null != ll)
    {
        if (ll.Name == linkLabelPlatypus2.Name)
        {
            Platypus = 2;
        } else if (ll.Name == linkLabelPlatypus3.Name)
        {
            Platypus = 3;
        } else if (ll.Name == linkLabelPlatypus4.Name)
        {
            Platypus = 4;
        } else if (ll.Name == linkLabelPlatypus5.Name)
        {
            Platypus = 5;
        }
        toolTipPlatypi.SetToolTip(ll, DuckbillData.GetPlatypusDataForToolTip(Platypus)); 
    }
}

...ただし、ホバー時にツールチップも表示し、ユーザーがラベルをクリックする必要がないようにします。

4

2 に答える 2

4

ツールチップを設定する必要があるのは1回だけです。

public Form1()
{
    InitializeComponent();

    toolTip1.SetToolTip(linkLabel1, "foo");
    toolTip1.SetToolTip(linkLabel2, "bar");
}

終わり。

MouseHoverorハンドラーでこれを行うMouseEnterと、イベントが発生するたびにこの関数が何度も呼び出されます。それは機能しますが、不必要に複雑です。

フォームに必要なツールチップは1つだけで、任意の数のコンポーネントのヒントを提供でき、すべてを同時に継続的に提供できます(つまり、毎回変更または設定する必要はありません)。各コンポーネントには1つのヒントしかありませんが、プログラム全体でいつでも変更できます。 ShowAlways真である必要はありません-アクティブではないフォームにツールチップを表示するために使用されます(つまり、フォーカスのあるウィンドウの後ろにある非アクティブなウィンドウにカーソルを合わせるなど)。

于 2012-09-28T17:03:33.170 に答える
2

マウスホバーのイベントハンドラーを作成し、その中にツールチップの表示ロジックを含める必要があります。

    private void Label1_MouseHover(object sender, System.EventArgs e) 
    {
       //display logic
    }

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousehover.aspx

于 2012-09-28T16:53:31.667 に答える