对于我正在从事的项目,我创建了一个非常基本的虚拟键盘(不要问我为什么不使用内置的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
之所以这样子设置,是因为还有其他一些对象,它们不是可以设置为LastFocus
的TextBoxes或DataGridViews,所以我不想访问Backspace键。
但是,当尝试将LastFocus
设置为ActiveControl
时,如果它是DataGridView对象,运行此代码会给我以下错误:
禁用控件的隐形功能无法激活
我不确定为什么会出现此错误,因为我没有将DataGridView设置为禁用或其他任何设置。我还有其他方法可以解决吗?