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

问题描述 投票:1回答:1

问题:我想在用户拥有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标记此事件的任何建议?

vb.net datagridview combobox
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.