简体   繁体   English

如何删除DataGrid中的多行

[英]How to delete multiple rows in DataGrid

I made a code for delete the selected row, you can see here:我做了一个删除选定行的代码,你可以在这里看到:

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;

But there's a problem.但是有一个问题。 If the user select multiple with ctrl combination rows the program crash displaying this exception:如果用户使用ctrl组合选择多个行,程序将崩溃并显示此异常:

Argument out of range exception参数超出范围异常

on mygrid.Items.Remove(grid.SelectedItems[i]);mygrid.Items.Remove(grid.SelectedItems[i]);

Is my code wrong?我的代码错了吗? Isn't the best way to delete values?不是删除值的最佳方法吗?

you delete an item from the list you are iterating through.你从你正在迭代的列表中删除一个项目。 Let's say your list has 10 items so you have an for loop from 0 to 9. If you delete 2 Items you still will iterate to 9 and the list has only 8 items so you get an:假设您的列表有 10 个项目,因此您有一个从 0 到 9 的 for 循环。如果您删除 2 个项目,您仍然会迭代到 9 并且列表只有 8 个项目,因此您会得到:

Argument out of range exception参数超出范围异常

you can solve this by iterating backwards你可以通过向后迭代来解决这个问题

for (int i = grid.SelectedItems.Count -1; i >= 0; i--)

Edit: the removed item will be removed from grid.SelectedItems too.编辑:删除的项目也将从grid.SelectedItems删除。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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