C#在列表框搜索中选择多个结果?

时间:2017-01-20 19:49:56

标签: c# search listbox

我想在列表框中搜索我创建的对象值。这是覆盖字符串。这是项目添加到列表框中的方式。

 public override string ToString()
    {
        string reservatiestring;
        reservatiestring ="Kamer: " + roomNumber + "  Op datum: " + datum + "  Aantal personen: " + personen.Count + "  Naam: " + reservatienaam;
        return reservatiestring;
    }

我现在想在搜索特定房间号时在我的列表框中搜索结果。所有roomNumber都保存在一个组合框中。这就是我目前所拥有的:

private void buttonSearch_Click(object sender, EventArgs e)
    {
        foreach (var item in listBox1.Items)
        {
        for (int i = listBox1.Items.Count - 1; i >= 0; i--)
        {
            if (listBox1.Items[i].ToString().ToLower().Contains(comboBox1.SelectedText.ToLower()))
            {
                listBox1.SetSelected(i, true);
            }
            else
            {
                MessageBox.Show("error");
            }
        }

这仅选择一个结果,但仅未将其指定给roomNumber对象。当我放入foreach以使其选择多个项目时,我的程序失败并且我收到以下错误:

  

此枚举器绑定的列表已被修改。只有在未更改列表的情况下才能使用枚举器

要求的额外信息! 这是我将信息添加到列表框的地方:

  

private void btnReserve_Click(object sender,EventArgs e)           {               Reservations reservatie = new Reservations();

        reservatie.roomNumber = Convert.ToInt32(numericUpDownroom.Value);
        reservatie.datum = dateTimePicker1.Value;
        reservatie.reservatienaam = textBoxName1.Text;



        for (int i = 0; i <= personcount; i++)
        {
            Person persoon = new Person();
            persoon.naam = textBoxName1.Text;
            persoon.leeftijd = Convert.ToInt32(numericUpDownAge1.Value);
            reservatie.personen.Add(persoon);

        }
        if (!comboBox1.Items.Contains(reservatie.roomNumber))
        {
            comboBox1.Items.Add(reservatie.roomNumber);
        }
        else
            reservaties.Add(reservatie);
        listBox1.FormattingEnabled = false;
        listBox1.Items.Add(reservatie.ToString());

错误:the error when it pops up. The dutch additional information is the initial error message.

1 个答案:

答案 0 :(得分:0)

我不明白为什么在你的情况下你需要一个foreach来进行多选,特别是你没有在代码中的任何地方使用“var item”。

但是,如果“SetSelected”实现在项目内部进行一些更改,则可能会发生异常。

  1. 确保您已为多选

    配置了列表

    //将选择模式设置为多个并扩展。 listBox1.SelectionMode = SelectionMode.MultiExtended;

  2. 删除foreach。 (如果您仍需要另一个循环,请将“foreach”替换为“for”)

  3. 查看以下文档链接,其中包含多选ListBox的良好示例: https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.items(v=vs.110).aspx