最近,我一直在做一个项目,它将数据以编程方式导入到WPF DataGrid中。
我几乎完成了项目,但我遗漏的是一个按钮,以删除选定的细胞,这是我卡住了!
我使用DataGrid的基本知识编写了以下代码:
var grid = dataGrid1;
if (grid.SelectedIndex >= 0)
{
for (int i = 0; i <= grid.SelectedItems.Count; i++)
{
grid.Items.Remove(grid.SelectedItems[i]);
};
}
像CurrentItem一样只删除选中的项目,但它不会删除超过2个选中的项目!
我的DataGrid应该至少包含100个项目。我已经添加了一个删除所有选项,但这也是必要的。
如果有人能给我答案,我将不胜感激。
9条答案
按热度按时间mpgws1up1#
通过删除所选项目,您正在更改
SelectedItems
集合。您应该先复制它,然后开始删除。a8jjtwal2#
这对我也很有效。
xvw2m8pv3#
你在这里做的错误是,你在循环期间删除项目,这会扰乱循环计数,所以复制一个网格,从中删除选定的项目,然后用原始的项目来平衡它。看看这个
mlmc2os54#
这对我很有效…
w6lpcovy5#
使用SelectedItem而不是SelectedIndex的while循环
vnjpjtjt6#
我也有和作家一样的问题。找到了一个很好的(我认为)解决方案。
所以主要的问题是SelectedItems是动态的,当你删除一行的时候,它又会重新计算。
所以我的代码看起来像这样:
因此,每次for循环执行第1步时,datagrid1.SelectedItems.Count都会减1,变量i会增加。
z6psavjg7#
jgwigjjp8#
我的解决方案(如果你使用的是adonet,autogeneratepolums =true);
cu6pst1q9#
这对我很有效…