Friday, March 4, 2011

how to get rid of checkedlistbox selection highlighting effect

When an item is clicked in the checkedlistbox, it gets highlighted. How can I prevent this highlighting effect?

I can hook into the SelectedIndexChanged event and clear the selection, but the highlighting still happens and you see a blip. In fact, if you hold down the mouse click, never releasing it after you clicked on the checkbox area, the selection remains highlighted until you release the mouse button. I basically want to get rid of this highlighting effect altogether.

From stackoverflow
  • this will do it apart from you still get the dotted line bit.

    this.checkedListBox1.SelectionMode = System.Windows.Forms.SelectionMode.None;
    

    although now you can't click the check boxes... so you'll have to do something like so:

      private void checkedListBox1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < checkedListBox1.Items.Count; i++)
      {
    
    
              if (checkedListBox1.GetItemRectangle(i).Contains(checkedListBox1.PointToClient(MousePosition)))
              {
                  switch (checkedListBox1.GetItemCheckState(i))
                  {
                      case CheckState.Checked:
                          checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
                          break;
                      case CheckState.Indeterminate:
                      case CheckState.Unchecked:
                          checkedListBox1.SetItemCheckState(i, CheckState.Checked);
                           break;
                  } 
    
              }
    
      }
        }
    

    if all that isn't what your after.. you can always just make your own one. its a fairly simple control.

    Eyal : Seems like it would be more efficient to use checkedListBox1.IndexFromPoint(e.x, e.y) in the MouseDown handler, instead of looping through the GetItemRectangle results.

0 comments:

Post a Comment