在enter(vb.net)上的datagridview中更改已编辑的单元格

时间:2013-10-16 14:36:24

标签: vb.net datagridview

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

试试这个:

  1. 定义将在编辑发生时引发的标记flag_editedCellEndEdit事件)

  2. 定义一个函数changeSelectionToNextCell,它将撤消默认行为的选择更改(SelectionChanged事件)

  3. 以下是一个示例:

    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