我想在列表框中搜索我创建的对象值。这是覆盖字符串。这是项目添加到列表框中的方式。
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.
答案 0 :(得分:0)
我不明白为什么在你的情况下你需要一个foreach来进行多选,特别是你没有在代码中的任何地方使用“var item”。
但是,如果“SetSelected”实现在项目内部进行一些更改,则可能会发生异常。
确保您已为多选
配置了列表//将选择模式设置为多个并扩展。 listBox1.SelectionMode = SelectionMode.MultiExtended;
删除foreach。 (如果您仍需要另一个循环,请将“foreach”替换为“for”)
查看以下文档链接,其中包含多选ListBox的良好示例: https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.items(v=vs.110).aspx