Tuesday, May 3, 2011

Tooltips for CheckedListBox items?

Is there a straighforward way to set additional text to appear in a tooltip when a user's mouse is held over an item in a CheckedListBox?

What I would expect to be able to do in code is:

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

Can anyone point me in the right direction to do this? I've already found a couple of articles that involve detecting which item the mouse is currently over and creating a new tooltip instance, but this sounds a little too contrived to be the best way.

Thanks in advance.

From stackoverflow
  • Contrived or not; that's what there is...

    I'm not aware of an easier way than you have already described (although I'd probably re-use a tooltip instance, rather than creating new all the time). If you have articles that show this, then use them - or use a 3rd party control that supports this natively (none leap to mind).

  • This article on codeproject describes a similar problem for a combobox. Maybe you can get some help from that article.

    I don't think, that there's an easier way.

  • Add a Tooltip object to your form and then add an event handler for the CheckedListBox.MouseHover that calls a method ShowToolTip(); Add MouseMove event of your CheckedListBox which has the following code:

    //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();
    

    Then create the ShowToolTip method:

    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());
    
            }
        }
    
  • Alternately, you could use a ListView with checkboxes instead. This control has builtin support for tooltips.

    Paul Suart : Thanks for the suggestion, hadn't seen that.
    Jeremy Wiebe : The annoying thing is that ListView doesn't support data binding (or am I missing something?)

0 comments:

Post a Comment