将 C# 与 .Net 2.0 一起使用(尽管问题出现在 4.0 中)
似乎存在涉及 Windows 窗体中 ToolStrip 控件和 ToolStripControlHosts 焦点的错误。
考虑这个例子:用户单击 ToolStripMenuItem“Test A”,然后将鼠标斜向移动到下拉 ToolStripMenuItem“5”上。对角拖动时鼠标经过“Test B”,但当鼠标进入下拉列表时,焦点会自动从“Test B”移回“Test A”。这可以正常工作。
示例 1:http: //i.stack.imgur.com/0X9mZ.png
现在考虑一个类似的例子,但下拉列表中有一个 ToolStripControlHost。鼠标沿对角线移动,经过获得焦点的“测试 B”。当鼠标进入 ToolStripControlHost 时,焦点不会返回到父“Test A”,因此下拉列表关闭并且 ToolStripControlHost 被隐藏。
示例 2:http: //i.stack.imgur.com/XJ75K.png
我的问题是,我该如何处理这种情况?有没有办法将焦点强制到 ToolStripMenuItem“测试 A”上?
我尝试将“Test A”的 DropDown 的 autoclose 属性设置为 false,然后手动处理 close 事件,但这会导致几个问题。单击 ToolStripControlHost 时,ToolStrip 会收到一个 OnClose 事件,其中 ToolStripDropDownCloseReason 被 AppClicked。此外,ToolStripControlHost 中的任何文本框都不会接收文本事件,因为 ToolStrip 似乎正在使用它们(退格键在下拉列表中将焦点向上移动,而不是删除文本等)。
谢谢你的帮助
西蒙