تب بندی فرم های فرزند

فرض کنید که چند فرم دارید و می خواهید آنها را به صورت Tab در فرم اصلی نشان دهید. برای این کار ابتدا یک برنامه ایجاد کرده و خاصیت IsMdiContainer فرم اصلی را به صورت زیر به True تغییر دهید :
tabbed-mdi-form-in-c#-01
در مرحله بعد یک کنترل TabControl به فرم اضافه کرده و خاصیت Dock آن را به Top تغییر دهید :
tabbed-mdi-form-in-c#-02
سپس تمام تب های آن را با زدن دکمه Delete کیبورد پاک و خاصیت Visible کنترل را به false تغییر دهید :
tabbed-mdi-form-in-c#-03
حال دو فرم به روش زیر به برنامه اضافه کنید :
tabbed-mdi-form-in-c#-04

tabbed-mdi-form-in-c#-05
در نهایت تمام کدهای زیر را در رویدادهای مربوطه و در فرم اصلی می نویسید :

using System;
using System.Windows.Forms;

namespace TabbedForms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
            form2.MdiParent = this;

            Form3 form3 = new Form3();
            form3.Show();
            form3.MdiParent = this;
        }

        private void Form1_MdiChildActivate(object sender, EventArgs e)
        {
            if (this.ActiveMdiChild == null)
            {
                tabControl1.Visible = false;
            }               
            else
            {
                this.ActiveMdiChild.WindowState = FormWindowState.Maximized;
                if (this.ActiveMdiChild.Tag == null)
                {
                    TabPage TabPage1 = new TabPage(this.ActiveMdiChild.Text);
                    TabPage1.Tag = this.ActiveMdiChild;
                    TabPage1.Parent = tabControl1;
                    tabControl1.SelectedTab = TabPage1;

                    this.ActiveMdiChild.Tag = TabPage1;
                    this.ActiveMdiChild.FormClosed += new FormClosedEventHandler(ActiveMdiChild_FormClosed);
                }
                if (!tabControl1.Visible)
                {
                    tabControl1.Visible = true;
                }                 
            }
        }

        private void ActiveMdiChild_FormClosed(object sender, FormClosedEventArgs e)
        {
            ((sender as Form).Tag as TabPage).Dispose();
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((tabControl1.SelectedTab != null) && (tabControl1.SelectedTab.Tag != null))
            {
                (tabControl1.SelectedTab.Tag as Form).Select();
            }              
        }
    }
}

حال برنامه را اجرا و نتیجه را مشاهده نمایید :
tabbed-mdi-form-in-c#-06