如何对datagridview组合框单元确认的选择进行编辑或结束编辑?

时间:2014-07-11 15:59:31

标签: vb.net datagridview combobox

问题:我想提交一个编辑,当用户有一个datagridview组合框单元时,即它将是常规组合框单元格的“Selection Committed”

我尝试了什么:因此基于很多stackflow问题(例如Datagridview comboBox not selecting on click/edit),他们看到所调用的事件,例如所选索引已更改,单元格值已更改,单元格内容单击,编辑控件显示。   在这些事件处理程序中,我尝试提交编辑,但是在另一个单元格单击后调用此事件,而不是在单元格中选择了所选项目。我已经尝试过“选择索引已更改”处理程序和定义,但由于组合框单元没有该事件,因此我在vb.net中收到错误

以下是示例代码段:

 Private Sub editingComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

    editCameraTable.CommitEdit(DataGridViewDataErrorContexts.Commit)
    editCameraTable.EndEdit()
End Sub

在单击其他单元格之前不会调用此方法。有关如何为datagridviewcomboboxcell标记此事件的任何建议?

1 个答案:

答案 0 :(得分:0)

Handel CellEndEdit动作。是的,只有在此人点击其他地方后才会触发;但是将它与keydown预览相结合。人们在文本编辑结束时自然地单击return,您可以使用它来触发更新。 gridview中的单元格无法确定某人何时完成输入,因此需要该人在编辑提交发生之前单击它。唯一的另一种方法是使用一个计时器来重置每个keydown事件,并在键入进入空闲状态时进行更新。

Private Sub datagridview1_CellEndEdit(ByVal sender As Object, _
               ByVal e As System.EventArgs) HAndels datagridview1.CellEndEdit

   '  If InLoad = True Then Exit Sub ' may want to suppress if you are programmatically changing this

   datagridview1.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange)
   ' Do your saves... 


End Sub

Private Sub datagridview1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) _
     Handles datagridview1.KeyDown

    If e.KeyCode = Keys.Return Then
        datagridview1.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange)
    End If

End Sub