【问题标题】:Selecting multiple Listbox items through code通过代码选择多个Listbox项
【发布时间】:2012-10-29 22:49:19
【问题描述】:

您好,我已经搜索了一段时间,但似乎找不到解决问题的方法,我尝试了多种方法来通过代码选择列表框中的多个项目,但是没有一个有效,我得到的最好结果是在我的列表框中选择了 1 个项目。

基本上我想选择多个相同值的项目。

下面是我的代码,抱歉,如果我看起来像新手,但我是编程新手,还在学习基本知识。

 foreach (string p in listBox1.Items)
 {
           if (p == searchstring) 
           {
                 index = listBox1.Items.IndexOf(p);
                 listBox1.SetSelected(index,true);

           }
 }

如您所见,我试图告诉程序循环遍历列表框中的所有项目,并为每个等于“searchstring”的项目获取索引并将其设置为选中。

然而,这段代码所做的只是选择列表中等于“searchstring”的第一个项目使其被选中并停止,它不会遍历所有“searchstring”项目。

【问题讨论】:

  • 您的列表框中的SelectionMode 是否设置为Multiple

标签: c# listbox


【解决方案1】:

按照评论中的建议,您应该根据需要将SelectionMode 设置为MulitSimpleMultiExpanded,但您还需要使用forwhile 循环而不是foreach,因为foreach 循环不允许在迭代期间更改集合。因此,即使设置此属性也不会使您的代码运行,您将获得异常。试试这个:

for(int i = 0; i<listBox1.Items.Count;i++)
{
     string p = listBox1.Items[i].ToString();
     if (p == searchstring)
     {
          listBox1.SetSelected(i, true);

     }
}

您可以在使用设计器时在“属性”窗口中设置 SelectionMode,例如,在 Form 的构造函数中使用以下代码:

listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple;

【讨论】:

  • 他的 foreach 循环很好。您只是无法从正在迭代的集合中添加或删除项目。他没有这样做。
  • @LeeO。自己试一下,你会发现它抛出了一个异常。在大多数情况下,我会在发布之前检查代码(只要我能够创建测试平台),我没有足够的声誉来允许自己发布不起作用的代码。
猜你喜欢
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多