首页 文章

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

提问于
浏览
0

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

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

我现在想在我的列表框中搜索结果,同时搜索特定的roomNumber . 所有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

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

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

    • 确保已将列表配置为多选

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

    • 删除foreach . (如果你仍然需要另一个循环,用“for”替换你的foreach)

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

相关问题