gpt4 book ai didi

c# - 无法从 DataGridView 中删除一行

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:09 25 4
gpt4 key购买 nike

我只是想从 DataGridView 中删除一行。基本上,第一列是一个组合框,当用户从组合框中选择“[删除]”时,应该删除整行。所以我有这个 OnCellEndEdit 事件代码:

if (grid.CurrentCell.ColumnIndex == 0 && grid.CurrentRow.Cells[0].Value.ToString()=="[Remove]") {
grid.EndEdit();
grid.Rows.RemoveAt(grid.CurrentRow.Index);
}

这不是删除行,而是抛出异常:

操作无效,因为它会导致对 SetCurrentCellAddressCore 函数的重入调用。

我试过在删除之前将 CurrentRow 移动到不同的列,如下所示:

DataGridViewRow deleteRow = grid.CurrentRow;
grid.CurrentRow.Selected = false;
grid.Rows[deleteRow+1].Selected = true;
grid.Rows.RemoveAt(deleteRow);

同样的问题。网格的 AllowUserToDeleteRows 属性为真。我没有将数据绑定(bind)到此控件。

我相信问题出在我与 CellEndEdit 事件的绑定(bind)上,就好像我从按钮控件的 OnClick 事件中删除了行一样,我没问题。

我能否以编程方式触发按钮的 OnClick 事件?怎么办?

最佳答案

看起来您已经在 OnCellEndEdit 调用中,所以我认为您不需要再次调用 grid.EndEdit()。尝试删除该调用并查看该行是否被删除。我相信错误是因为您可能会陷入无限循环而导致的。

关于c# - 无法从 DataGridView 中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4305661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com