在我的应用程序中,我有一个 ToolStripMenu(文件、编辑、注释)、一个位于我的工作区上方的 ToolStrip 和一个工作区本身的上下文菜单。现在,Notes ToolStripMenu、ToolStrip 和 ContextMenuStrip 都具有执行相同操作的相同内容。我想知道,是否有一种优雅的方法来设计 ToolStripMenu 并让其他两个“镜像”它的功能和内容,而不是重写所有内容 3 次?我看到所有 3 个控件都使用 ToolStripItems 和 ToolStripItemCollections,因此我认为这很容易做到,但属性大多是只读的,如果我尝试遍历一个项目以将它们添加到另一个,它们是从初始所有者中删除,并且 ToolStripItems 没有 Clone 方法。
谢谢。
最佳答案
创建一个重用您的项目、操作等的方法...
public MainForm()
{
//in your constructor, create all your common methods, actions, etc and save them to private vars
//Then in your form:
ToolStripMenu menu = new ToolStripMenu();
AttachCommonFunctionality(menu);
Items.Add(menu);
ContextMenuStrip rightClick = new ContextMenuStrip();
AttachCommonFunctionality(rightClick);
this.ContextMenu = rightClick;
//etc...
}
private void AttachCommonFuntionality(Control c)
{
c.Items.Add(_item1);
c.Items.Add(_item2);
//etc...
c.OnClick += _myCommonAction;
//etc...
}
关于c# - 将 ToolStripMenu 重新用于 ToolStrip 或 ContextMenuStrip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086269/