vb.net获取鼠标选定控件

vb.net获取鼠标选定控件,vb.net,winforms,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

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


我发现的另一个解决方案是全局钩子,但我不知道如何使用它。我请求你的帮助和建议。如果您有全局钩子示例或更好的解决方案如何点击鼠标控制共享:)欢迎提供任何帮助,请随时写下您的意见:)

您当前的Windows编程方法是落后的

正确的方法是在按下Ctrl+T时检入控件的click事件,并做出相应的响应

  • 导入Win API“GetKeyState”
  • 使用“GetKeyState”检查Ctrl键和T键是否已按下
  • 有关更多信息,请参阅

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


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

    您想实现什么?我想在我的windows窗体中按ctrl+t键盘组合,然后用鼠标按control并获得用户选择的控件。我为什么要这样做?因为我需要在应用程序上获取任何用户选择的控件。为什么需要在运行时选择控件?你会用它做什么?你在尝试吗?我需要在运行时选择一个控件,因为我以后会更改它(好吧,我会更改它的一些属性)。所以你认为PInvoke是向前迈出的一步吗?:)