65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 实现多文档界面 (MDI) 选项卡页面浏览

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.44/5 (19投票s)

2005年12月22日

1分钟阅读

viewsIcon

251176

downloadIcon

11386

一篇关于在 MDI Windows 窗体中实现选项卡页浏览的文章。

Sample Image

引言

多文档界面 (MDI) 选项卡页浏览在许多 Windows 应用程序中非常流行,尤其是像 Opera、Mozilla、Maxthon 等互联网浏览器。 在找不到相关文章后,我决定自己写一篇,向任何感兴趣的读者展示,创建 MDI 选项卡页浏览可以通过相当简单但整洁的编码来实现。 所需的只是一点创造力。

使用代码

源代码是选项卡页窗口应用程序的模板。 该模板可用于创建具有选项卡页功能的窗口程序。

代码

首先,在父窗体中,将 IsMDIContainer 属性设置为 true。 将 TabControl 组件附加到窗体,并将 Dock 属性设置为 Top

接下来,在子窗体中,创建一个未初始化的 TabControl 和一个 TabPage。 为这两个对象创建属性。 稍后,我们将看到这两个对象将包含对父窗体中 TabControl 和相应的子 TabPage 的引用。

private TabControl tabCtrl;
private TabPage tabPag;

public TabPage TabPag
{
    get
    {
        return tabPag;
    }
    set
    {
        tabPag = value;
    }
}

public TabControl TabCtrl
{
    set
    {
        tabCtrl = value;
    }
}

当 MDI 子窗体关闭时,销毁相应的选项卡页。

private void MDIChild_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    //Destroy the corresponding Tabpage when closing MDI child form
    this.tabPag.Dispose();

    //If no Tabpage left
    if (!tabCtrl.HasChildren)
    {
        tabCtrl.Visible = false;
    }
}

当 MDI 子窗体激活时,激活相应的选项卡页。

private void MDIChild_Activated(object sender, System.EventArgs e)
{
    //Activate the corresponding Tabpage
    tabCtrl.SelectedTab = tabPag;

    if (!tabCtrl.Visible)
    {
        tabCtrl.Visible = true;
    }
}

当创建子窗体时,将 TabControlTabPage 的引用值添加到其字段中。

private void NewMenuItem_Click(object sender, System.EventArgs e)
{
    //Creating MDI child form and initialize its fields
    MDIChild childForm = new MDIChild();
    childForm.Text = "MDIChild " + childCount.ToString();
    childForm.MdiParent = this;

    //child Form will now hold a reference value to the tab control
    childForm.TabCtrl = tabControl1;

    //Add a Tabpage and enables it
    TabPage tp = new TabPage();
    tp.Parent = tabControl1;
    tp.Text = childForm.Text;
    tp.Show();

    //child Form will now hold a reference value to a tabpage
    childForm.TabPag = tp;

    //Activate the MDI child form
    childForm.Show();
    childCount++;

    //Activate the newly created Tabpage
    tabControl1.SelectedTab = tp;
}

当选择选项卡页时,激活其对应的 MDI 子窗体。

private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    foreach (MDIChild childForm in this.MdiChildren) 
    {
        //Check for its corresponding MDI child form
        if (childForm.TabPag.Equals(tabControl1.SelectedTab)) 
        {
            //Activate the MDI child form
            childForm.Select();
        }
    }
}

就是这样!

© . All rights reserved.