从 ToolStripMenuItem 打开 ContextMenu
我试图模仿 Windows 资源管理器的行为以及收藏夹项目如何启动上下文菜单。
我目前正在使用:
contextMenu.Show((sender as ToolStripMenuItem).GetCurrentParent().PointToScreen(e.Location));
这发生在 ToolStripMenuItem 的 MouseDown 事件中。问题是右键单击后菜单立即关闭,并且我不知道在上下文菜单打开时有什么方法可以暂停它。
我尝试从 ToolStripMenuItem 派生并覆盖 MouseDown/MouseUp,但我不知道如何在单击时保持其打开状态。
有没有好的方法可以做到这一点?
I am trying to mimic the behavior of, for example, Windows Explorer and how the Favorites items can launch a context menu.
I currently am using:
contextMenu.Show((sender as ToolStripMenuItem).GetCurrentParent().PointToScreen(e.Location));
This occurs in the MouseDown event of the ToolStripMenuItem. The problem is that the menu closes immediately after right-click, and I don't know any way to suspend it while the context menu is open.
I've tried deriving from ToolStripMenuItem and overriding the MouseDown/MouseUp but I can't figure out how to keep it open on click.
Is there a good way of doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我很幸运的,更直接一点:
This is what I've had luck with, it's a bit more direct:
实现此目的的一种方法是使用
ToolStripDropDown
控件在 ToolStripDropDown 内部托管一个 ListBox。这可能需要对 AutoClose 行为进行一些调整,但它应该可以帮助您开始:
首先在主窗体中,将以下行添加到 ToolStripDropDropDown 项中,
然后创建一个自定义下拉类,如下所示
:测试这效果相当好。让我知道进展如何。
One way that you could accomplish this is by using the
ToolStripDropDown
control to host a ListBox inside of the ToolStripDropDown.This may require some tweaking regarding the
AutoClose
behavior, but it should get you started:First in your main form, add the following line to your ToolStripDropDropDown item
Then create a custom drop down class as follows:
In my tests this worked reasonably well. Let me know how it goes.
由于
ContextMenuStrip
派生自ToolStripDropDown
,您可以这样做:As
ContextMenuStrip
is derived fromToolStripDropDown
, you could do this: