Winforms 当下拉列表打开时,如何关注ToolStripTextBox(ToolStripDropDownButton.DropDownItems集合中的一个项)

Winforms 当下拉列表打开时,如何关注ToolStripTextBox(ToolStripDropDownButton.DropDownItems集合中的一个项),winforms,Winforms,我正在以编程方式构建ToolStripDropDownButton的DropDownItems。第一个字段始终是ToolStripTextBox(用户可以在其中键入以过滤以下项目)。我希望ToolStripTextBox在下拉列表打开时立即具有焦点,以便用户可以: 单击ToolStripDropDown按钮 开始键入(以筛选项目) 但是,当我尝试关注ToolStripTextBox(在DropDownOpen事件处理程序中)时: 我得到一个例外: System.ArgumentException

我正在以编程方式构建ToolStripDropDownButton的DropDownItems。第一个字段始终是ToolStripTextBox(用户可以在其中键入以过滤以下项目)。我希望ToolStripTextBox在下拉列表打开时立即具有焦点,以便用户可以:

  • 单击ToolStripDropDown按钮
  • 开始键入(以筛选项目)
  • 但是,当我尝试关注ToolStripTextBox(在DropDownOpen事件处理程序中)时:

    我得到一个例外:

    System.ArgumentException: 'Invisible or disabled control cannot be activated'
    
    这是下拉列表的屏幕截图,您可以看到我在说什么:

    当前,顶部的文本框没有焦点,您必须先单击它,然后才能开始在过滤器中键入内容


    仅供参考,在设置ActiveControl之前,我已尝试测试ToolStripTextBox的可见性,在本事件中是正确的。我尝试过在其他几个事件中执行该操作,并得到了相同的结果。

    仅设置焦点对我来说很有效:

    Dim v As ToolStripTextBox = DirectCast(tsbForms.DropDownItems(0), ToolStripTextBox)
    v.Focus()
    

    我使用了父工具StripDropDownButton的DropDownOpen事件。

    我尝试的第一件事就是调用Focus(),但Intellisense没有提供自动完成功能。我认为它不支持Focus()(因为ToolStrip控件是轻量级的),因此寻找替代方法,因此选择了Me.ActiveControl。但是是的,专注是有效的。。。智能感知没有。谢谢。@RAM intellisense在Visual Studio 2012上工作。它在Visual Studio 2017上对我不起作用。
    Dim v As ToolStripTextBox = DirectCast(tsbForms.DropDownItems(0), ToolStripTextBox)
    v.Focus()