vb.net获取鼠标选择的控件

时间:2012-11-08 19:42:04

标签: vb.net winforms

我正在创建一个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,但它无法专注于标签和其他一些无法聚焦的控件。所以这可能不是正确的选择。

我找到的另一个解决方案是全局钩子,但我无法理解如何使用它。我问你的帮助和建议。如果你有全局钩子的样本或更好的解决方案如何让鼠标点击控制分享它:)任何帮助表示赞赏,随时写下你的意见:)

1 个答案:

答案 0 :(得分:0)

目前的方法是针对Windows编程的。

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

  1. 导入Win API'GetKeyState'
  2. 使用'GetKeyState'检查Ctrl键和T键是否已关闭。
  3. 有关详细信息,请参阅PInvoke page

    handle a click event for all controls的正确方法就是为所有控件添加一个中央点击事件处理程序,将你的键逻辑放在该处理程序中。

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