Для проекта, над которым я работаю, я создал очень простую виртуальную клавиатуру (не спрашивайте меня, почему я не использую встроенную 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 для отключенияили что-нибудь.Есть ли другой способ, которым я могу пойти по этому поводу?