0

データテーブルをデータソースとして使用して設定された datagridview テーブルがあります。datagridview は edittable に設定されており、セルの値を変更できますが、もちろん、グリッド ビューは直接バインドされていないため、変更は元のデータベース テーブルに反映されません。Enter キーを押すと (セルを編集するとき)、フォーカスが右側のセルに移動する (下の行を選択するのではなく) ように datagridview を設定することは可能ですか? これは、右端の列に到達するまで続ける必要があります。この場合、次の編集セルは次の行の最初のセルになります。

前もって感謝します!

4

1 に答える 1

2

これを試して:

  1. flag_edited編集が発生したときに発生するフラグを定義する(CellEndEditイベント)

  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
于 2013-10-17T16:23:18.900 に答える