【发布时间】:2011-10-21 20:41:36
【问题描述】:
我目前正在开发一个 C# WPF 项目。我有一个列表,它使用一个类来存储多个值。该类称为 DBTables,内部有以下内容:
class DBTables
{
public string selDatabase { get; set; }
public string selTable { get; set; }
}
我正在使用以下代码创建列表的新实例
List<DBTables> tableArr = new List<DBTables>();
我将新项目添加到列表中没有任何问题,但我遇到的问题是从列表中删除项目时。
当一个复选框被选中时,项目被添加到列表中,当复选框被取消选中时,项目需要被删除。每次选中复选框时,都会使用以下代码添加两个值:
private void addBackupArray(string table)
{
backupArr.Add(new DBTables
{
selDatabase = selectedDatabase,
selTable = table
});
}
当未选中该复选框时,需要删除该位置的值,并且我已经让它工作了,但是在它删除该项目后,它会显示错误“InvalidOperationException,集合已修改;枚举可能无法执行'。
以下是我目前用于从列表中删除项目的代码。
private void removeBackupArray(string table)
{
int i = 0;
foreach (DBTables tables in backupArr)
{
if (selectedDatabase == tables.selDatabase && table == tables.selTable)
{
backupArr.RemoveAt(i);
i = 0;
}
i++;
}
}
上面的代码遍历列表中的值,并根据两个变量是否与列表中找到的值匹配的 if 语句在计数器 i 的当前位置删除它。
我怎样才能解决这个问题,这样我才能在不出现错误的情况下删除项目。
感谢您提供的任何帮助。
【问题讨论】: