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