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






4.44/5 (19投票s)
2005年12月22日
1分钟阅读

251176

11386
一篇关于在 MDI Windows 窗体中实现选项卡页浏览的文章。
引言
多文档界面 (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;
}
}
当创建子窗体时,将 TabControl
和 TabPage
的引用值添加到其字段中。
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();
}
}
}
就是这样!