代码之家  ›  专栏  ›  技术社区  ›  Paul Suart Wes

CheckedListBox项目的工具提示?

  •  13
  • Paul Suart Wes  · 技术社区  · 15 年前

    我会 预料 能够在代码中执行以下操作:

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

    有人能给我指出正确的方向吗?我已经找到了几篇文章,涉及到检测鼠标当前在哪个项目上,并创建一个新的工具提示实例,但这听起来有点做作,不是最好的方法。

    5 回复  |  直到 15 年前
        1
  •  20
  •   Fermin    15 年前

    将Tooltip对象添加到表单中,然后为调用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());
    
            }
        }
    
        2
  •  6
  •   bruno conde    15 年前

    ListView 支持 .

        3
  •  0
  •   Marc Gravell    15 年前

    是否人为;这就是存在的。。。

    我不知道有比您描述的更简单的方法(尽管我可能会重复使用工具提示实例,而不是一直创建新实例)。如果有文章显示了这一点,请使用它们,或者使用本机支持这一点的第三方控件(不要突然想到)。

        4
  •  0
  •   Zach Olivare    9 年前

    在您正在使用的表单中(可能在.Designer.cs文件中),您需要将MouseMove事件处理程序添加到CheckedListBox(Fermin最初建议使用MouseHover事件处理程序,但这对我不起作用)。

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

    private ToolTip toolTip1;
    private int toolTipIndex;
    

    最后,您需要实现showCheckBoxToolTip()方法。这个方法与Fermin的答案非常相似,不同的是我将事件回调方法与ShowToolTip()方法相结合。另外,请注意,其中一个方法参数是MouseEventArgs。这是因为MouseMove属性需要一个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());
            }
        }
    }
    
        5
  •  0
  •   user2784648    8 年前

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