将DataGridView设置为活动控件

时间:2019-02-22 15:07:15

标签: vb.net datagridview focus keypress

对于我正在从事的项目,我创建了一个非常基本的虚拟键盘(不要问我为什么不使用内置的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设置为禁用或其他任何设置。我还有其他方法可以解决吗?

0 个答案:

没有答案