[英]How to delete multiple rows in DataGrid
我做了一个删除选定行的代码,你可以在这里看到:
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
组合选择多个行,程序将崩溃并显示此异常:
参数超出范围异常
在mygrid.Items.Remove(grid.SelectedItems[i]);
我的代码错了吗? 不是删除值的最佳方法吗?
你从你正在迭代的列表中删除一个项目。 假设您的列表有 10 个项目,因此您有一个从 0 到 9 的 for 循环。如果您删除 2 个项目,您仍然会迭代到 9 并且列表只有 8 个项目,因此您会得到:
参数超出范围异常
你可以通过向后迭代来解决这个问题
for (int i = grid.SelectedItems.Count -1; i >= 0; i--)
编辑:删除的项目也将从grid.SelectedItems
删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.