繁体   English   中英

如何删除DataGrid中的多行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM