kumaran_ Ответов: 1

Как использовать сочетание клавиш в datagrid in VB.NET


Всем привет, я очень новичок в этом деле. VB.net &не знаю понятия упс ясно.

У меня есть сетка, которая имеет 3 столбца, я хочу вставить данные предыдущей строки того же столбца в текущую ячейку при нажатии какой-то определенной клавиши(например: - F1)
Смотрите Сетку Здесь

В приведенной выше сетке первая строка столбца "метки" имеет значение "тест", Когда я нажимаю клавишу F1(курсор во второй строке) Я хочу вставить "тест" во вторую строку (ячейку столбца "метки" )

Причина реализации потому что мне нужно вставить повторяющиеся одни и те же данные в строку сетки


Я попробовал ниже код его работы, но я не уверен, что это правильный путь

Я скопировал
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean


От Сайте StackOverflow

Пожалуйста, объясните выше функцию (значение protected and override и ее аргументы), и я использую событие щелчка ячейки, которое является правильным или неправильным

Я Объявил
Dim keyData, msg

Но он показывает предупреждающее сообщение
"Variable 'msg' passed by reference before it has assigned a value. A null reference exception could result at run time"

и

"variable 'keydata' is used before it has assigned a value. A null reference exception could result at run time"


Что я уже пробовал:

Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
      Dim keyData, msg
      Select Case DataGridView1.CurrentCell.ColumnIndex
          Case gcol.marks
              ProcessCmdKey(msg, keyData)
      End Select
  End Sub
  Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
      Select Case keyData
          Case Keys.F1
              Select Case Me.DataGridView1.CurrentCell.ColumnIndex
                  Case gcol.marks
                      Dim row = Me.DataGridView1.CurrentCell.RowIndex
                      With Me.DataGridView1
                          Dim tobepaste = .Item(gcol.marks, row - 1).Value
                          .CurrentCell.Value = tobepaste
                      End With
              End Select
              Return True
      End Select
      Return MyBase.ProcessCmdKey(msg, keyData)
  End Function

Richard Deeming

Что такое CellClick Хэндлер должен был это делать,и какое это имеет отношение к сочетаниям клавиш?

kumaran_

Смотрите эту ссылку https://gyazo.com/1b6b2ae674b0580a4b37b8bb79f14cc2, хотите вставить "тест" в 2-й столбец 2-й строки при нажатии клавиши F1, смотрите отмеченную контрольную строку и курсор, помещенный в ячейку

Richard Deeming

И что же?

Как вы думаете, что CellClick событие связано с нажатием клавиши быстрого доступа?

kumaran_

Как использовать это для моего случая ?, Пожалуйста, объясните на примере

1 Ответов

Рейтинг:
1

Mahesh Jangid

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean

Он переопределяет функцию по умолчанию
Система.Окна.Форм.Форма

переопределение этой функции означает, что форма может реагировать на событие нажатия клавиши

просто вы можете использовать после этого любые комбинации клавиш для манипулирования данными, которые связаны с формой