【问题标题】:Reuse a ToolStripMenu for a ToolStrip or a ContextMenuStrip?为 ToolStrip 或 ContextMenuStrip 重用 ToolStripMenu?
【发布时间】:2011-03-06 09:39:40
【问题描述】:

在我的应用程序中,我有一个 ToolStripMenu(文件、编辑、注释)、一个位于工作区正上方的 ToolStrip 和一个用于工作区本身的上下文菜单。现在,Notes ToolStripMenu、ToolStrip 和 ContextMenuStrip 都具有执行相同操作的相同内容。我想知道,是否有一种优雅的方式来设计 ToolStripMenu 并拥有另外两个“镜像”它的功能和内容,而不是重写所有内容 3 次?我看到所有 3 个控件都使用 ToolStripItems 和 ToolStripItemCollections ,因此我认为这很容易做到,但属性大多是只读的,如果我尝试遍历一个项目以将它们添加到另一个项目,它们是从初始所有者中删除,并且没有用于 ToolStripItems 的 Clone 方法。

谢谢。

【问题讨论】:

    标签: c# winforms user-interface menu


    【解决方案1】:

    创建一个方法来重复使用您的项目、操作等...

    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...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 2015-05-18
      相关资源
      最近更新 更多