【发布时间】:2017-01-20 19:49:56
【问题描述】:
我想在列表框中搜索我创建的对象值。这是覆盖字符串。这就是将项目添加到列表框中的方式。
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 使其选择多个项目时,我的程序失败并且出现以下错误:
此枚举器绑定的列表已被修改。只有在列表没有改变的情况下才能使用枚举器
根据要求提供额外信息! 这是我将信息添加到列表框的地方:
private void btnReserve_Click(object sender, EventArgs e) { 预订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.
【问题讨论】:
-
您能分享更多代码或提供更完整的异常消息吗?从您提供的代码中,组合框或列表框都没有删除或添加项目,这似乎是消息状态(更改“已选择”属性通常不会产生此类错误。
-
您无法在迭代中修改绑定到 foreach 的项目,这就是导致问题的原因,但如果您已将 selectionMode 标记为多个,则使用 for 循环的解决方案应该没问题
-
添加了更多代码以澄清,感谢您的快速回复!