通过代码选择多个Listbox项 [英] Selecting multiple Listbox items through code

查看:21
本文介绍了通过代码选择多个Listbox项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hi there I have searched for a while now and can't seem to find a solution to my problem, I have tried multiple methods to select multiple items in my listbox through code however none have worked, The best result I got was 1 selected item in my listbox.

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

Basically I want to select multiple items of the same value.

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

below is my code, sorry if I seem newbie but I am new to programming and still learning basic stuff.

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

           }
 }

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

So as you can see I am trying to tell the program to loop through all the items in my listbox, and for every item that equals "searchstring" get the index and set it as selected.

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

However all this code does is select the first item in the list that equals "searchstring" makes it selected and stops, it doesn't iterate through all the "searchstring" items.

推荐答案

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

As suggested in the comment, you should set SelectionMode to either MulitSimple or MultiExpanded depending on your needs, but you also need to use for or while loop instead offoreach, because foreach loop doesn't allow the collection to be changed during iterations. Therefore, even setting this Property won't make your code run and you will get the exception. Try this:

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

     }
}

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

You can set SelectionMode either in the Properties window when using designer or in, for instance, constructor of your Form using this code:

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

这篇关于通过代码选择多个Listbox项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆