- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的应用程序中有工具栏和具有相同选项的上下文菜单,所以我想将 ToolStripButtons 添加到 ContextMenuStrip 和 ToolStrip,不幸的是我不能这样做。即使我手动向两者添加项目,它也只显示在一个上。
现在我在工具栏中有按钮:
我想要这样的东西。我希望这个选项是一个,因为我会经常启用和禁用这个按钮,最后只有一个选项,所以为什么要两个按钮?
最佳答案
这是一个常见问题,我发现最简单的解决方案是将“共享”代码放在继承自 ToolStripMenuItem
的 MenuFeature
类中。
您仍然必须创建此类的 2 个实例,但每个实例都非常轻量级,并且只有两种用法之间的任何差异的代码(即 ContextMenu 项可能使用 ToolStripItemDisplayStyle.ImageAndText
,而ToolStrip 项可能使用 ToolStripItemDisplayStyle.Image
)。
这允许通用代码在您的自定义 MenuFeature
类中只存在一次,但仍然允许对该菜单项的每次使用进行局部更改。
如果您想自动同步Enabled
/Visible
/等属性,您可以在构造函数中维护所有实例的静态集合,然后更新所有项目使用像 EnabledChanged
/etc 这样的事件。然而,我不建议这样做,因为我发现同一菜单“功能”的不同实例通常需要它们自己的状态——但这超出了这个问题的范围,那些对我如何管理项目感兴趣的人可以发表评论关于这个答案或 PM 我。
关于c# - 如何向 ContextMenuStrip 和 ToolStrip 添加相同的 ToolStripButtons?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082069/
我是一名优秀的程序员,十分优秀!