When the MDI Child Form is activated; if child form has a tab page, activate the corresponding tab page else create a tab page for child form and select tab page.
private void Form1_MdiChildActivate(object sender, 
                                    EventArgs e) 
{ 
    if (this.ActiveMdiChild == null) 
        tabForms.Visible = false; 
        // If no any child form, hide tabControl 
    else 
    { 
        this.ActiveMdiChild.WindowState = 
        FormWindowState.Maximized; 
        // Child form always maximized 
        // If child form is new and no has tabPage, 
        // create new tabPage 
        if (this.ActiveMdiChild.Tag == null) 
        { 
            // Add a tabPage to tabControl with child 
            // form caption 
            TabPage tp = new TabPage(this.ActiveMdiChild
                                     .Text); 
            tp.Tag = this.ActiveMdiChild; 
            tp.Parent = tabForms; 
            tabForms.SelectedTab = tp;
            
            this.ActiveMdiChild.Tag = tp; 
            this.ActiveMdiChild.FormClosed += 
                new FormClosedEventHandler(
                                ActiveMdiChild_FormClosed); 
        }
        if (!tabForms.Visible) tabForms.Visible = true;
    }
}
When the MDI Child Form is closing, destroy the corresponding tab page. Add the following code to main form.
private void ActiveMdiChild_FormClosed(object sender, 
                                    FormClosedEventArgs e)
{
    ((sender as Form).Tag as TabPage).Dispose(); 
}
When a tab page selected, activate its child form 
private void tabForms_SelectedIndexChanged(object sender, 
                                           EventArgs e) 
{ 
    if ((tabForms.SelectedTab != null) && 
        (tabForms.SelectedTab.Tag != null)) 
        (tabForms.SelectedTab.Tag as Form).Select(); 
}
 
 
No comments:
Post a Comment