如何删除DataGrid中的多行

时间:2015-07-07 07:33:49

标签: c# wpf 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组合行,程序将崩溃,显示此异常:

  

参数超出范围异常

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

我的代码错了吗?不是删除值的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

从正在迭代的列表中删除项目。 让我们说你的列表有10个项目,所以你有一个从0到9的for循环。如果删除2个项目你仍然会迭代到9,列表只有8个项目,所以你得到一个:

  

参数超出范围异常

你可以通过向后迭代来解决这个问题

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

修改 已删除的项目也将从grid.SelectedItems中删除。