如何向ContextMenuStrip和ToolStrip添加相同的ToolStripButtons?

时间:2013-04-18 11:46:42

标签: c# winforms contextmenustrip toolstripbutton toolstripmenu

我的应用程序和上下文菜单中有相同选项的工具栏,所以我想 将ToolStripButtons添加到ContextMenuStrip和ToolStrip,遗憾的是我不能这样做。 即使我手动添加项目,它也仅显示在一个项目上。

现在我在工具栏中有按钮:

我想要这样的东西。我希望这个选项是一个,因为我会经常启用和禁用这个按钮,最后有一个选项,为什么两个按钮?

1 个答案:

答案 0 :(得分:0)

这是一个常见问题,我发现最简单的解决方案是将“共享”代码放在继承自MenuFeature的{​​{1}}类中。

您仍然需要创建此类的2个实例,但每个实例都非常轻量级,并且只有2个用法之间的任何差异的代码(即ContextMenu项可能使用ToolStripMenuItem,而ToolStrip项可能使用ToolStripItemDisplayStyle.ImageAndText)。

这允许公共代码仅在自定义ToolStripItemDisplayStyle.Image类中存在一次,但仍允许对此菜单项的每次使用进行本地更改。

如果要自动同步MenuFeature / Enabled / etc等属性,可以在构造函数中维护所有实例的静态集合,然后使用{{1}等事件更新所有项目}}/等等。但是,我建议不要这样做,因为我发现同一个菜单“功能”的不同实例通常需要自己的状态 - 但是这个问题已超出范围,那些对我管理的项目感兴趣的人可以评论在这个答案或PM我。