我制作了删除所选行的代码,你可以在这里看到:
var grid = Players_DataGrid;
var mygrid = Players_DataGrid;
if (grid.SelectedIndex >= 0)
{
for (int i = 0; i <= grid.SelectedItems.Count; i++)
{
mygrid.Items.Remove(grid.SelectedItems[i]);
};
}
grid = mygrid;
但是存在问题。如果用户选择多个ctrl
组合行,程序将崩溃,显示此异常:
参数超出范围异常
on mygrid.Items.Remove(grid.SelectedItems[i]);
我的代码错了吗?不是删除值的最佳方法吗?
答案 0 :(得分:1)
从正在迭代的列表中删除项目。 让我们说你的列表有10个项目,所以你有一个从0到9的for循环。如果删除2个项目你仍然会迭代到9,列表只有8个项目,所以你得到一个:
参数超出范围异常
你可以通过向后迭代来解决这个问题
for (int i = grid.SelectedItems.Count -1; i >= 0; i--)
修改强>
已删除的项目也将从grid.SelectedItems
中删除。