单击列表框中的空白区域时丢失选定项

时间:2014-01-09 22:50:23

标签: c# winforms listbox

我想问你一件事,我有一个包含多个项目的列表框。 列表框设置为MultiSimple作为SelectionMode。所以我可以选择多个项目。

它工作得很好但是如果我单击列表框中的空白区域,则会导致取消选择我选择的最后一个项目。或者,如果没有选择项目,则选择第一项。

如何在单击空白区域时阻止列表框选择/取消选择项目? (空格我指的是我项目下方的空间。)

2 个答案:

答案 0 :(得分:1)

尝试使用此版本的ListBox控件:

public class ListEx : ListBox {
  private const int WM_LBUTTONDOWN = 0x201;
  protected override void WndProc(ref System.Windows.Forms.Message m) {
    if (m.Msg == WM_LBUTTONDOWN) {
      Point pt = new Point(m.LParam.ToInt32());
      if (this.IndexFromPoint(pt) == -1) {
        return;
      }
    }
    base.WndProc(ref m);
  }
}

multisimple listbox. stop whitespace clicking from selecting deselecting last clicked item转换

答案 1 :(得分:0)

哇我完全重新创建了你所做的事情,我想出的唯一选择是让你的列表框更小以消除空白。如果框中的列表不是固定大小,您可以始终根据列表大小更改其大小,并在需要滚动之前设置最大大小。

这不是最好的解决方案,但似乎有效。

它看起来像这样。

public Form1(){
            InitializeComponent();
            if (listBox1.Items.Count < 6)
            {

                listBox1.Height = listBox1.Items.Count*12+9;
            }
            else
            {
                listBox1.Height = 69;
            }

        }