【发布时间】:2017-09-25 12:24:49
【问题描述】:
我想在我的应用程序中的所有打开的表单中使用一个 MainMenuStrip。我不想在所有表单上显示相同的 MainMenu,而是 MainMenu 应该只出现在我的 MainForm 上,并且应该可以从我的所有其他表单访问。
所需的行为与 Visual Studio 2013 中的相同(可能其他版本也是如此)。如果一个文档是浮动的并且您点击了 ALT 按钮或任何组合,例如ALT+F,MainWindow 出现在前面并且 MainMenu 是可见的,尽管 MainWindow 似乎没有被激活。当您再次按下 ALT 按钮时,焦点将返回到浮动窗口。
当按下菜单键时,我尝试将消息从同级表单转发到 MainForm,但 MainForm 需要成为前台窗口才能处理消息 - 正如我在 .net 源代码中看到的那样。 https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/ToolStripManager.cs,1680
我不想使用 MDI - 我只想拥有与 MDI 中相同的菜单行为。
如果有人对如何实现这一点有任何建议,我将非常感激。
【问题讨论】:
-
当点击菜单热键时记住表格,激活主表格,显示菜单。当菜单关闭时 - 激活以前的表格。还是我错过了什么?
-
这个问题和命令行界面有什么关系?那个标签似乎无关。
-
标签应该是 c++/cli 中的 cli
-
你有一个很好的答案,但我仍然很好奇你为什么不想使用 mdi 而只想模仿它
-
在 MDI 中,您的子窗体卡在主窗体的范围内。我需要能够把它们拖出来。