Ken*_*ing 31

Form.ActiveControl 可能是你想要的.


Mar*_*rkJ 9

请注意,使用层次结构时,单次调用ActiveControl是不够的.想像:

Form
    TableLayoutPanel
        FlowLayoutPanel
            TextBox (focused)
Run Code Online (Sandbox Code Playgroud)

(formInstance).ActiveControl将返回引用TableLayoutPanel,而不是TextBox

所以使用这个(完全披露:改编自这个C#答案)

  Function FindFocussedControl(ByVal ctr As Control) As Control
    Dim container As ContainerControl = TryCast(ctr, ContainerControl)
    Do While (container IsNot Nothing)
      ctr = container.ActiveControl
      container = TryCast(ctr, ContainerControl)
    Loop
    Return ctr
  End Function
Run Code Online (Sandbox Code Playgroud)