DataGridView UserDeletingRow未触发

问题描述:

考虑使用SelectionMode = RowHeaderSelect的2个DataGridView。在grid1中,我有2列;一个TextBox和一个CheckBox。在grid2中,我有2列;一个组合框和一个文本框。DataGridView UserDeletingRow未触发

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

这样的UserDeletingRow事件永远不会触发如DataGridView的常见问题解答说,“用户可以删除行只有在当前小区是不是在编辑模式下,AllowUserToDeleteRows属性设置为true”。

作为一种变通方法我在RowHeaderMouseClick

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

实现这个代码在GRID1的情况下,我通过复选框列和当我按下DEL的UserDeletingRow事件触发的名称。但是,对于grid2传递ComboBox列的名称不会触发事件。

我试过以下内容:
1-选择RowHeaderCell - > Exception,因为它不能被选中。
2- grid.EndEdit() - >没有效果。
3-将SelectionMode更改为FullRowSelect,然后返回RowHeaderSelect - > Cell设置为编辑模式。

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

编辑(缩写的问题):
点击的rowHeader选择行,并把第一个单元格在编辑模式下,如果适用,这样点击DEL键删除单元格内容,不火UserDeletingRow事件。作为一种解决方法,我选择一个单元格(如果可用),它不能被置于编辑模式,例如, CheckBoxColumn。

这是单击RowHeader的默认行为吗?如果是的话,你能告诉我一个解决方法吗?如果没有,你能指出我这种行为的原因吗?

编辑2:
我发现,在编辑模式下设置为EditOnEnter发出咔哒的rowHeader把第一个单元格中的编辑模式。我会尽力克服这一点,但任何帮助表示赞赏。

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

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

+0

很高兴你知道,我可以帮忙; - ] – M2X 2010-11-11 21:35:09

这是一个耻辱,我不能留下评论(因为代表的东西等!) 你也不清楚你到底想做什么。

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

如果您希望能够在不选择行标题的情况下删除一行,请考虑使用“全行选择”而不是“行标题选择”。

+0

单击RowHeader选择整行,但将第一个单元格置于编辑模式。这就是为什么按DEL删除单元格内容并不会触发UserDeletingRow事件。 – 2010-10-31 15:04:56

+1

好吧,我现在试过了,它没有把我的第一个单元格放到编辑模式,我可以很容易地删除那一行。不知道是否有一个属性,你提到的行为... – M2X 2010-10-31 15:26:12

+0

当EditMode设置为EditOnEnter时单击RowHeader将第一个单元格编辑。这就是为什么DEL不会触发UserDeletingRow事件。 – 2010-10-31 16:19:30