首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ToolStrip中将焦点保持在ToolStripControlHost的所有者上

如何在ToolStrip中将焦点保持在ToolStripControlHost的所有者上
EN

Stack Overflow用户
提问于 2012-04-26 10:54:01
回答 1查看 1.3K关注 0票数 1

在.Net 2.0中使用C# (尽管该问题在4.0中出现)

Windows窗体中似乎存在涉及ToolStrip控件和ToolStripControlHosts焦点的错误。

考虑这个例子:用户点击测试“ToolStripMenuItem A",然后将鼠标对角移动到下拉列表ToolStripMenuItem "5”上。对角线拖动时,鼠标经过“测试B",但当鼠标进入下拉列表时,焦点会自动从”测试B“移回”测试A“。这可以正常工作。

示例1:http://i.stack.imgur.com/0X9mZ.png

现在考虑一个类似的例子,但下拉列表中有一个ToolStripControlHost。鼠标沿对角线移动,经过接收焦点的“测试B”。当鼠标进入测试时,焦点不会返回到父“ToolStripControlHost A",因此下拉列表关闭,ToolStripControlHost隐藏。

示例2:http://i.stack.imgur.com/XJ75K.png

我的问题是,我该如何处理这种情况?有没有办法把焦点放在ToolStripMenuItem的“测试A”上?

我曾尝试将“测试A”的DropDown的autoclose属性设置为false,然后手动处理close事件,但这会导致几个问题。当单击ToolStripControlHost时,ToolStrip会接收一个OnClose事件,ToolStripDropDownCloseReason为AppClicked。此外,ToolStripControlHost中的任何textboxes都不会接收文本事件,因为ToolStrip似乎正在使用它们(退格键会将下拉列表中的焦点向上移动,而不是删除文本等)。

谢谢你的帮忙

西蒙

EN

回答 1

Stack Overflow用户

发布于 2013-10-25 10:46:56

因此,当我想要将控件添加到工具条的DropDown项中时,我遇到了类似的问题。这个解决方案的第一部分,至少在我的例子中,涉及创建包含我所需的所有内容的自定义UserControls。然而,即使在这样做的时候,我仍然有焦点问题,直到我把所有东西都放到LayoutControls中。除了DevExpress CheckedComboBoxEdit之外,一切都像预期的那样工作,因为它抓住了焦点,并且DropDown项没有句柄,它就会失去焦点。

我还尝试管理许多事件,并将AutoClose设置为false,但最终导致了其他问题。

我的建议是创建一个带有LayoutControl的UserControl来包含您的文本框(如果需要,还可以包含其他项)。这还将允许您将任何附加功能(事件、绑定等)您希望在UserControl后面的代码中将其挂钩到文本框中。我希望这对你有所帮助,如果你有任何其他问题,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10326587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档