我有一个使用数据表作为数据源填充的 datagridview 表。datagridview 已设置为可编辑,我可以更改单元格的值,但当然,更改不会反映在原始数据库表中,因为网格视图没有直接绑定。是否有可能让 datagridview 在我按下回车时(编辑单元格时),焦点转移到右侧的单元格(而不是选择下面的行)?这需要继续进行,直到我到达最右边的列,在这种情况下,下面的编辑单元格将是下一行中的第一个单元格。
提前致谢!
我有一个使用数据表作为数据源填充的 datagridview 表。datagridview 已设置为可编辑,我可以更改单元格的值,但当然,更改不会反映在原始数据库表中,因为网格视图没有直接绑定。是否有可能让 datagridview 在我按下回车时(编辑单元格时),焦点转移到右侧的单元格(而不是选择下面的行)?这需要继续进行,直到我到达最右边的列,在这种情况下,下面的编辑单元格将是下一行中的第一个单元格。
提前致谢!
尝试这个:
flag_edited
定义发生编辑时将引发的标志(CellEndEdit
事件)
定义changeSelectionToNextCell
将撤消默认行为的选择更改(SelectionChanged
事件)的函数
这是一个示例:
Private flag_edited As Boolean
Private Sub DataGridView1_CellEndEdit(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
flag_edited = True
End Sub
Private Sub DataGridView1_SelectionChanged(sender As Object, e As System.EventArgs) Handles DataGridView1.SelectionChanged
changeSelectionToNextCell()
End Sub
Private Sub changeSelectionToNextCell()
If flag_edited Then
flag_edited = False
If DataGridView1.CurrentCell IsNot Nothing Then
Dim row_index As Integer = DataGridView1.CurrentCell.RowIndex - 1
Dim col_index As Integer = DataGridView1.CurrentCell.ColumnIndex + 1
If col_index = DataGridView1.ColumnCount Then
col_index = 0
row_index += 1
End If
DataGridView1.CurrentCell = DataGridView1.Rows(row_index).Cells(col_index)
End If
End If
End Sub