MDI 子視窗使用 MDI父視窗的工具列

專案名稱: EIS
父視窗ToolStrip屬性Name: MainToolStrip
子視窗ToolStrip屬性Name: toolStrip1
建立介面 IChildBox 類別
在子視窗實作 IChildBox 介面
public partial class Form2 : Form,IChildBox
.... 
 

1. 由工具列拖曳(功能表與工具列)MenuStrip至MDI父視窗
    由工具列拖曳(功能表與工具列)ToolStrip至MDI父視窗
    
2. 由工具列拖曳(功能表與工具列)MenuStrip至MDI子視窗
    由工具列拖曳(功能表與工具列)ToolStrip至MDI子視窗
    Visible屬性皆設置為false

3. 加入如下程式碼至MDI父視窗

protected override void OnMdiChildActivate(EventArgs e)
{
    base.OnMdiChildActivate(e);
    MergeChildToolStrip();
}

private void MergeChildToolStrip()
{
    ToolStripManager.RevertMerge(MainToolStrip);
    IChildBox box = ActiveMdiChild as IChildBox;
    if (box != null)
    {
        ToolStripManager.Merge(box.OwnToolStrip, MainToolStrip);
    }
}


4. 建立 IChildBox interface
在方案總管右鍵EIS專案 -> 加入類別
加入如下程式碼:

using System.Windows.Forms;

namespace EIS
{
    internal interface IChildBox
    {
        ToolStrip OwnToolStrip
        { 
            get; 
        }
    }
}


5. 在 MDI 子視窗實作 IChildBox 介面
程式碼如下:

namespace EIS
{
    public partial class Form2 : Form,IChildBox
    {
        public Form2()
        {
            InitializeComponent();            
        }

        public ToolStrip OwnToolStrip
        {
            get
            {
                //toolStrip1为子窗体工具栏
                return toolStrip1;
            }
        }
    }
}


資料來源: Merging Mdi parent/child MenuStrip and ToolStrip
                 MDI窗体工具栏(ToolStrip)合并