【问题标题】:Application-level KeyUp/KeyDown events in VB.NET (not Windows form-level)VB.NET 中的应用程序级 KeyUp/KeyDown 事件(不是 Windows 窗体级)
【发布时间】:2012-04-01 19:28:16
【问题描述】:

我正在创建一个用 VB.NET 编写的 Excel 加载项。我想将 KeyDown 和 KeyUp 事件绑定到电子表格,以记录用户在导航电子表格时按下和释放箭头键的时间。

例如,理想情况下,这些事件将与本机 SheetActivate 和 SheetSelectionChange 事件一起内置到 Excel 中。唉,他们不是。

请注意,我对 Windows 窗体控件的 KeyDown/KeyUp 事件不感兴趣,因为我没有为此使用 Windows 窗体。相反,我想在 Excel 应用程序、工作簿或工作表级别创建这些事件。

【问题讨论】:

  • Excel 不会公开这些事件,这就是责任所在。您将不得不使用 WorkSheet 的 SelectionChange 事件。

标签: vb.net excel events keypress keydown


【解决方案1】:

您可以将 Windows API 调用 GetAsyncKeyStateSelectionChange 事件结合使用

这里有一个小 VBA sn-p 来演示

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Key As Long
    For Key = 3 To 255
        If GetAsyncKeyState(Key) Then
            MsgBox "KeyCode: " & Key & " was pressed."
        End If
    Next
End Sub

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2012-10-29
    • 2017-11-10
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多