繁体   English   中英

DataGridView UserDeletingRow不触发

[英]DataGridView UserDeletingRow Not Firing

考虑两个DataGridViews都具有SelectionMode = RowHeaderSelect。 在grid1中,我有2列; 一个TextBox和一个CheckBox。 在grid2中,我有2列; 一个ComboBox和一个TextBox。

当我单击RowHeader时,焦点转到第一个单元格,而不是RowHeaderCell。 当我按下DEL按钮时,单元格的内容将被删除(TextBox内容被清除并且ComboBox设置为第一项)。

这样,UserDeletingRow事件就不会触发,因为DataGridView FAQ会说:“只有当当前单元格不在编辑模式下,AllowUserToDeleteRows属性设置为true时,用户才能删除行”。

作为解决方法,我在RowHeaderMouseClick中实现了此代码

grid.CurrentCell = grid.Rows[rowIndex].Cells[columnName];
grid.Rows[rowIndex].Selected = true;

在grid1的情况下,我传递CheckBox列的名称,并在按下DEL时触发UserDeletingRow事件。 但是,对于grid2传递ComboBox列的名称不会触发该事件。

我尝试了以下方法:
1-选择RowHeaderCell->异常,因为无法选择它。
2- grid.EndEdit()->没有效果。
3-将SelectionMode更改为FullRowSelect,然后返回RowHeaderSelect->单元格设置为编辑模式。

我的问题:
无论网格的列如何,我都需要触发UserDeletingRow? 或者,如果可能的话,选择HeaderCell的解决方法?

编辑(问题的简短形式):
单击RowHeader会选择该行并将第一个单元格置于编辑模式(如果适用),通过这种方式单击DEL按钮将删除该单元格内容,并且不会触发UserDeletingRow事件。 解决方法是,选择一个不能置于编辑模式的单元格(如可用),例如CheckBoxColumn。

这是单击RowHeader的默认行为吗? 如果是,您可以告诉我解决方法吗? 如果否,您能指出我这种现象的原因吗?

编辑2:
我发现将EditMode设置为EditOnEnter会使单击RowHeader将第一个单元格置于编辑模式。 我将尝试克服这一问题,但会有所帮助。

可惜我还不能发表评论(因为代表的东西等等!)而且您不清楚您想做什么。

单击该行的RowHeader会导致选中整行,然后按Del按钮删除该行并触发该事件!

如果要删除行而不选择行标题,请考虑使用“全行选择”而不是“行标题选择”。

我在http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/cab3c9eb-4c86-475e-8cbd-dee6b235765a中找到了答案。 一种解决方法是在单击RowHeader时将EditMode更改为EditOnEnter之外的其他模式,然后再将其更改回EditOnEnter。

我要感谢@ M2X,因为他的评论很有帮助。

暂无
暂无

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

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