Находясь в режиме редактирования, перейти к следующей ячейке и остаться в режиме редактирования для VB.NET DataGridView? - PullRequest
0 голосов
/ 02 августа 2010

У меня есть DataGridView, в котором один столбец содержит данные, которые пользователь должен выровнять, добавляя пробелы. Например, первые две строки могут содержать:

kumbu
kuimbiu

И пользователь должен иметь возможность выстроить буквы в соответствие, добавив пробелы. Примерно так:

ku mb u
kuimbiu

Теперь, чтобы сделать это с помощью DataGridView, пользователь должен войти в режим редактирования в верхней ячейке, добавить пробелы, нажать клавишу ввода, повторно войти в режим редактирования в нижней ячейке, а затем добавить пробелы. Наши пользователи хотели бы иметь возможность, находясь в режиме редактирования в верхней ячейке, нажать стрелку вниз и перейти ко второй ячейке, оставаясь в режиме редактирования, сохраняя щелчки или нажатия F2.

Есть ли хороший способ сделать это? Я попытался отловить нажатие клавиши со стрелкой вниз, выходя из режима редактирования, перемещая ячейку, а затем переходя в режим редактирования с помощью метода BeginEdit сетки, но это не делает то, что я хочу.

Есть идеи?

1 Ответ

1 голос
/ 06 августа 2010

При выходе из ячейки фиксируйте статус редактирования в переменной класса. Когда пользователь нажимает или вводит, следующая ячейка начнет режим редактирования, но только если предыдущая ячейка была в режиме редактирования. Вы можете добавить дополнительную логику, если хотите, чтобы она основывалась на столбцах.

Private blnEditMode As Boolean = False
Private Sub dgv_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellEnter
    If blnEditMode Then
        dgv.BeginEdit(False)
    End If
End Sub

Private Sub dgv_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellLeave
    blnEditMode = dgv.IsCurrentCellInEditMode
End Sub
...