日期:2014-05-17  浏览次数:21329 次

C# WINFORM程序LISTBOX限制选择项目数量
请问一下,当LISTBOX的属性被设置为多选模式后,如何能限制它的选择项目数量呢?

  比如LISTBOX有20个项目,我要限制它最多只能选择4个项目,之后就不能再选择其它的项目了,除非取消一个之前的

选择,才能再次选择。

  LISTBOX的SELECTDINDEX属性只能获取到当前最小INDEX的选中项ID,也就是说,我选择第3个项目,它是值为3,选择
第10个项目,它的值为3,选择第11个项目,它的值为3; 郁闷。。。。。。
   
  其它像SELECTDVALUE、SELECTITEM 情况与SELECTINDEX类似。。。。

  如果用两个LISTBOX的话,就可以实现了,双击LISTBOX1的ITEM,然后加到LISTBOX2里面这个时候是可以控制
LISTBOX2的项目数量的,但这样与用户要求的操作上就不一样了。。。。  

  请大家帮帮忙啦,实在是找不到办法了。
   

  谢谢啦

------解决方案--------------------
C# code
 

选中第五个时,自动取消

      private void listBox1_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count >4)
            {
                for (int i = 0; i < listBox1.SelectedItems.Count; i++)
                {
                    if (listBox1.SelectedItem != listBox1.SelectedItems[i])
                    { 
                    listBox1.SetSelected(listBox1.SelectedIndex,false);
                    return;
                    }
                }
            }
        }

------解决方案--------------------
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count > 4)
{
for (int i = 0; i < listBox1.SelectedItems.Count; i++)
{
if (listBox1.SelectedItem != listBox1.SelectedItems[i])
{
listBox1.SetSelected(listBox1.SelectedIndex, false);
return;
}
}
}
}
------解决方案--------------------
还没有弄好吗?你可以这样子滴:
 void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count > 4)
{
this.listBox1.SelectedItems.Remove(this.listBox1.SelectedItem);

}
}