您的位置:首页 > 其它

给你的MDI程序加上一个标签栏

2007-04-21 18:27 239 查看
在MDI窗体中定义一个

TabControl tabCon = new TabControl();

在MdiChildActivate事件写:代码如下:

private void MainFrame_MdiChildActivate(object sender, EventArgs e)
{
Form f = this.ActiveMdiChild;
if (f == null) { return; }
string key = f.Handle.ToString();
if (!tabCon.TabPages.ContainsKey(key))
{
tabCon.TabPages.Add(key, f.Text);
f.Closed += delegate(Object _sender, EventArgs _e) { tabCon.TabPages.RemoveByKey((_sender as Form).Handle.ToString()); };
}
tabCon.SelectedIndex = tabCon.TabPages.IndexOfKey(key);
}

void tabCon_Selected(Object sender, TabControlEventArgs e)
{
if (e == null || e.TabPage == null)
return;
string key = e.TabPage.Name;
foreach (Form f in this.MdiChildren)
{
if (f.Handle.ToString() == key)
{
f.BringToFront();
break;
}
}
}
private void tabCon_DoubleClick(object sender, EventArgs e)
{
if (this.tabCon.Visible && tabCon.TabCount>0)
{
Form childFrom = this.ActiveMdiChild;
childFrom.Close();
this.RemoveTabPageFromTabCtrl();
}
}
/**/
/// <summary>
/// 在子窗体关闭时移除对应的TabPage
/// </summary>
private void RemoveTabPageFromTabCtrl()
{
for (int i = 0; i < this.tabCon.TabCount; i++)
{
if (this.ActiveMdiChild.Equals(tabCon.TabPages[i].Tag))
{
this.tabCon.TabPages.Remove(this.tabCon.TabPages[i]);
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐