تب بندی فرم های فرزند
فرض کنید که چند فرم دارید و می خواهید آنها را به صورت Tab در فرم اصلی نشان دهید. برای این کار ابتدا یک برنامه ایجاد کرده و خاصیت IsMdiContainer فرم اصلی را به صورت زیر به True تغییر دهید :
در مرحله بعد یک کنترل TabControl به فرم اضافه کرده و خاصیت Dock آن را به Top تغییر دهید :
سپس تمام تب های آن را با زدن دکمه Delete کیبورد پاک و خاصیت Visible کنترل را به false تغییر دهید :
حال دو فرم به روش زیر به برنامه اضافه کنید :
در نهایت تمام کدهای زیر را در رویدادهای مربوطه و در فرم اصلی می نویسید :
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(); } } } }
حال برنامه را اجرا و نتیجه را مشاهده نمایید :