C# C在列表框搜索中选择多个结果?
我想在列表框中搜索我创建的对象值。这是覆盖字符串。这是将项目添加到列表框中的方式C# C在列表框搜索中选择多个结果?,c#,search,listbox,C#,Search,Listbox,我想在列表框中搜索我创建的对象值。这是覆盖字符串。这是将项目添加到列表框中的方式 public override string ToString() { string reservatiestring; reservatiestring ="Kamer: " + roomNumber + " Op datum: " + datum + " Aantal personen: " + personen.Count + " Naam: " + reser
public override string ToString()
{
string reservatiestring;
reservatiestring ="Kamer: " + roomNumber + " Op datum: " + datum + " Aantal personen: " + personen.Count + " Naam: " + reservatienaam;
return reservatiestring;
}
我现在想在我的列表框中搜索结果,同时搜索特定的房间号。所有房间号码都保存在一个组合框中。这就是我目前拥有的:
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以使其选择多个项目时,我的程序失败,并出现以下错误:
已修改此枚举数绑定到的列表。仅当列表未更改时,才能使用枚举数
额外的信息要求!
这是我将信息添加到列表框的位置:
私有无效BTN保留\u单击对象发送者,事件参数e
{
预订预订=新预订
错误:我不明白为什么在您的情况下需要foreach进行多重选择,特别是您没有在代码中的任何地方使用var项 但是,如果SetSelected实现正在对项进行内部更改,则可能会发生异常 确保已将列表配置为“多选” //将选择模式设置为“多个”和“扩展”。 listBox1.SelectionMode=SelectionMode.MultiExtended 移除foreach。如果仍然需要另一个循环,请将foreach替换为for 选中下面的文档链接,其中包含v。多选列表框的良好示例:
您可以共享更多的代码或提供更完整的异常消息吗?从您提供的代码中,comboBox或listBox都没有删除或添加项,这似乎是更改所选属性的消息状态通常不会给出这种类型的错误。您不能在iteratio中修改绑定到foreach的项n所以这就是问题的原因,但是如果您已经将selectionMode标记为多线程,那么您的解决方案应该可以使用for循环,以澄清更多的代码,谢谢您的快速回复!谢谢您的建议,我设置了选择模式。但是仍然会出现错误。我会在错误消息中添加一个屏幕截图。我应该做什么是否放入for循环?您必须将foreach循环全部移除,或将其替换为常规for循环。
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());