Перемещение по ячейкам DataGridView клавишей tab - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

в форме windows form представлен программно созданый datagridview состоящий из 4 столбцов в первых трех - значения получаемые ранее. а в последнем необходимо ввести данные при создании первым трем столбцам присваивается свойство readonly=true как сделать так, чтобы: 1. при нажатии TAB при выделении ячейки в колонке 4 выделение переходило на следующую строку в колонку 4(а не в колонку 1)...по хорошему первые три колонки не доступные для редактирования не должны никак выделяться... ну или с помощью нажатия tab как перемещаться вниз по столбцу повторюсь: grid создается программно в ходе работы, так что и свойства надо писать ручками... вообщем надо чтобы пользователь ввел в ячейку 1 строки столбца 4 значение, нажал таб ввел значение которое уже ввелось в ячейку 2 строки 4 столбца и тд... пытался сделать так: при создании формы и грида создаем событие
далее уже в форме
при этом верно работает если кликать мышкой на ячейки первых трех столбцов, но при нажатии таб при этом выделяется правильная ячейка, но вот активная, обведенная пунктиром ячейка в которую вводятся данные все равно перемещается по старой схеме, таким образом чтобы добраться до нужной надо нажать таб трижды, что не хорошо... что подскажете?

Решение задачи: «Перемещение по ячейкам DataGridView клавишей tab»

textual
Листинг программы
  Private Sub DataGridView1_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyDown
        If e.KeyCode = Keys.Tab Then
            e.Handled = True
            If sender.CurrentRow.Index <> sender.Rows.Count - 1 Then
                sender.CurrentCell = sender(3, sender.CurrentRow.Index + 1)
            End If
        End If
    End Sub
 
    Private Sub DataGridView1_KeyUp(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyUp
        If e.KeyCode = Keys.Tab Then
            e.Handled = True
            If sender.CurrentRow.Index <> sender.Rows.Count Then
                sender.CurrentCell = sender(3, sender.CurrentRow.Index)
            End If
        End If
    End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5