在输入时更改数据网格视图中编辑的单元格 (vb.net)



我有一个使用数据表作为数据源填充的数据网格视图表。数据网格视图已设置为可编辑,我可以更改单元格的值,但当然,由于网格视图不是直接绑定的,因此更改不会反映在原始数据库表中。是否可以以这样的方式使用数据网格视图,即当我按 Enter 键(编辑单元格时)时,焦点转移到右侧的单元格(而不是选择下面的行)?这需要继续下去,直到我到达最右边的列,在这种情况下,以下编辑单元格将是下一行中的第一个单元格。

提前感谢!

试试这个:

  1. 定义在发生编辑(CellEndEdit事件)时将引发的标志flag_edited

  2. 定义一个函数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

最新更新