0

我正在创建一个 Windows 窗体应用程序。按下某些键盘快捷键后,我必须执行一些操作。我有这部分:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    If keyData = Keys.Control & Keys.T Then
        'Wait till mouse clicks one of application controls
        'And get selected control information
    Else
        MyBase.ProcessCmdKey(msg, keyData)
    End If
End Function

此外,按下此键盘组合键后,我必须获得一个通过鼠标单击选择的控件。我无法在每个主要表单控件上进行事件(好吧,即使有可能,我相信这是一个愚蠢的选择)。

我拥有的解决方案之一是 Me.ActiveControl 但它不能专注于标签和其他一些无法聚焦的控件。所以这可能不是正确的选择。

我发现的另一个解决方案是全局挂钩,但我不明白如何使用它。我正在寻求您的帮助和建议。如果您有全局钩子示例或更好的解决方案如何获得鼠标点击控制分享它:) 任何帮助表示赞赏,请随时写下您的意见 :)

4

1 回答 1

0

对于 Windows 编程,您当前的方法是倒退的。

正确的方法是在按下 Ctrl+T 时检查控件的单击事件并做出相应的响应。

  1. 导入 Win API 'GetKeyState'
  2. 使用“GetKeyState”检查 Ctrl 键和 T 键是否按下。

有关详细信息,请参阅PInvoke 页面

为所有控件处理单击事件的正确方法是为所有控件添加一个中央单击事件处理程序,将您的按键逻辑放置在该处理程序中。

这些是高级技术,需要对 WinForms 有更深入的了解。

于 2012-11-08T20:05:15.430 回答