16

CheckedListBox内のアイテムの上にユーザーのマウスを置いたときに、ツールチップに表示される追加のテキストを設定する簡単な方法はありますか?

私がコードでできると期待することは次のとおりです。

uiChkLstTables.DisplayOnHoverMember = "DisplayOnHoverProperty"; //Property contains extended details

誰かがこれを行うための正しい方向に私を向けることができますか?マウスが現在どのアイテム上にあるかを検出し、新しいツールチップインスタンスを作成することを含むいくつかの記事をすでに見つけましたが、これは少し不自然に聞こえるので、最善の方法ではありません。

前もって感謝します。

4

5 に答える 5

20

フォームにツールチップオブジェクトを追加してから、メソッドShowToolTip();を呼び出すCheckedListBox.MouseHoverのイベントハンドラーを追加します。次のコードを持つCheckedListBoxのMouseMoveイベントを追加します。

//Make ttIndex a global integer variable to store index of item currently showing tooltip.
//Check if current location is different from item having tooltip, if so call method
if (ttIndex != checkedListBox1.IndexFromPoint(e.Location))
                ShowToolTip();

次に、ShowToolTipメソッドを作成します。

private void ShowToolTip()
    {
        ttIndex = checkedListBox1.IndexFromPoint(checkedListBox1.PointToClient(MousePosition));
        if (ttIndex > -1)
        {
            Point p = PointToClient(MousePosition);
            toolTip1.ToolTipTitle = "Tooltip Title";
            toolTip1.SetToolTip(checkedListBox1, checkedListBox1.Items[ttIndex].ToString());

        }
    }
于 2009-04-29T13:10:28.560 に答える
6

ListViewまたは、代わりにチェックボックス付きで使用することもできます。このコントロールには 、ツールチップのサポートが組み込まれています。

于 2009-04-29T13:15:18.940 に答える
0

考案されたかどうか。それがあります...

私はあなたがすでに説明したよりも簡単な方法を知りません(私はおそらく常に新しいものを作成するのではなく、ツールチップインスタンスを再利用するでしょうが)。これを示す記事がある場合は、それらを使用するか、これをネイティブにサポートするサードパーティのコントロールを使用してください(頭に浮かぶことはありません)。

于 2009-04-29T13:00:13.233 に答える
0

フェルミンの素晴らしい解決策をもう少し明確にするために、フェルミンの答えをさらに詳しく説明したいと思います。

作業しているフォーム(おそらく.Designer.csファイル内)で、MouseMoveイベントハンドラーをCheckedListBoxに追加する必要があります(Ferminは元々MouseHoverイベントハンドラーを提案しましたが、これは私には機能しませんでした)。

this.checkedListBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.showCheckBoxToolTip);

次に、ツールチップオブジェクトと整数の2つのクラス属性をフォームに追加して、ツールチップが表示された最後のチェックボックスを追跡します。

private ToolTip toolTip1;
private int toolTipIndex;

最後に、showCheckBoxToolTip()メソッドを実装する必要があります。このメソッドは、イベントコールバックメソッドをShowToolTip()メソッドと組み合わせたことを除いて、Ferminの回答と非常によく似ています。また、メソッドパラメータの1つがMouseEventArgsであることに注意してください。これは、MouseMove属性にMouseEventHandlerが必要であり、MouseEventHandlerがMouseEventArgsを提供するためです。

private void showCheckBoxToolTip(object sender, MouseEventArgs e)
{
    if (toolTipIndex != this.checkedListBox.IndexFromPoint(e.Location))
    {
        toolTipIndex = checkedListBox.IndexFromPoint(checkedListBox.PointToClient(MousePosition));
        if (toolTipIndex > -1)
        {
            toolTip1.SetToolTip(checkedListBox, checkedListBox.Items[toolTipIndex].ToString());
        }
    }
}
于 2015-03-22T20:58:50.210 に答える
0

アイテムのチェックボックスリストでListItemsを実行し、適切なテキストをアイテムの「title」属性として設定すると、ホバー時に表示されます...

foreach (ListItem item in checkBoxList.Items)
                { 
                    //Find your item here...maybe a switch statement or
                    //a bunch of if()'s
                    if(item.Value.ToString() == "item 1")
                    {
                        item.Attributes["title"] = "This tooltip will display when I hover over item 1 now, thats it!!!";
                    }
                    if(item.Value.ToString() == "item 2")
                    {
                        item.Attributes["title"] = "This tooltip will display when I hover over item 2 now, thats it!!!";
                    }
                }
于 2016-02-06T00:29:43.373 に答える