首页 > 解决方案 > 将 DataGridView 设置为活动控件

问题描述

对于我正在从事的项目,我创建了一个非常基本的虚拟键盘(不要问我为什么不使用内置的 Windows。简短的回答是我不能,我将把它留在那里)。

我让键盘上的键工作的方式是每个可编辑对象,无论是 TextBox、DataGridView 的一部分等,都会获得焦点,一个名为的通用对象LastFocus被设置为对该可编辑对象的引用。然后,每当按下任何键时,电流ActiveControl都会设置为LastFocus,然后我会调用SendKeys.SendWait()任何按下的键。

我目前的问题是尝试使用 DataGridView 对象执行此操作。现在,这就是我按下“退格”键的方法:

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 设置为禁用或任何其他内容。我还有其他方法可以解决这个问题吗?

标签: vb.netdatagridviewfocuskeypress

解决方案


推荐阅读