5

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

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

下面是我的代码,对不起,如果我看起来像新手,但我是编程新手,还在学习基本的东西。

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

           }
 }

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

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

4

1 回答 1

12

正如评论中所建议的,您应该根据需要设置SelectionModeMulitSimpleor MultiExpanded,但您还需要使用fororwhile循环而不是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使用此代码的构造函数中设置 SelectionMode:

listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple;
于 2012-10-29T23:05:04.690 回答