Установка DataGridView в качестве активного элемента управления - PullRequest
0 голосов
/ 22 февраля 2019

Для проекта, над которым я работаю, я создал очень простую виртуальную клавиатуру (не спрашивайте меня, почему я не использую встроенную Windows. Краткий ответ: я не могу ,и я собираюсь на этом остановиться).

Способ, которым я заставляю работать клавиши клавиатуры, заключается в том, что каждый редактируемый объект, будь то TextBox, часть DataGridView и т. д., получает фокус,универсальный объект с именем LastFocus устанавливается как ссылка на этот редактируемый объект.Затем, когда бы ни была нажата любая из клавиш, текущему ActiveControl присваивается значение LastFocus, и я затем вызываю SendKeys.SendWait() вызов для любой нажатой клавиши.

Моя проблема в данный момент пытается решитьэто с объектами DataGridView.Прямо сейчас это то, что у меня есть для нажатия моей клавиши «BACKSPACE»:

Private Sub BtnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
    If TypeOf LastFocus Is TextBox Then
        Me.ActiveControl = LastFocus
        SendKeys.SendWait("{BACKSPACE}")
    ElseIf TypeOf LastFocus Is DataGridView Then
        Me.ActiveControl = LastFocus
        SendKeys.SendWait("{BACKSPACE}")
    End If
End Sub

Причина, по которой я настроил подпрограмму следующим образом, состоит в том, что есть другие объекты, которые не являются TextBoxes или DataGridViews, которые могут бытьустановите LastFocus, чтобы я не хотел получать доступ к клавише Backspace.

Однако выполнение этого кода выдает следующую ошибку при попытке установить LastFocus в ActiveControl, когда это DataGridView.объект:

Невидимый элемент управления отключением не может быть активирован

Я не совсем уверен, почему я получаю эту ошибку, так как я не установил DataGridView для отключенияили что-нибудь.Есть ли другой способ, которым я могу пойти по этому поводу?

...