winform 如何使用TabControl 控件來作winform界面框架?框架
這樣的效果:tcp
首先菜單的窗口展現的承載器爲TabControl 控件,這個控件自己包含多頁面預覽和頁面初始化。this
如圖所示:要實現以下功能。設計
1. 安裝DevComponents.DotNetBar 組件 我這裏使用的是:10.9.0.4版本 這個可隨意,只要不是特別老的版本就能夠了。orm
2. 添加引用 DevComponents.DotNetBar2 如圖:對象
3. 設計Tablcontrol的展現樣式 默認便可。blog
4. 將要打開窗口建立 對象 放入TablControl控件的ITem中。源碼
5. 如何判斷已經打開的窗口顯示?string
須要循環tableContorl的tab 集合 將已存在的頁面設置顯示,選中。it
直接上源碼:
#region 控制添加窗口 private int index = 0; private void MenuItem(object sender, EventArgs e) { string menuItemTxt = ((DevComponents.DotNetBar.BaseItem)(sender)).Text; Office2007Form f = new Office2007Form(); switch (menuItemTxt) { case "File_ReadWrite": f = new Frm.UserSet(); break; case "DataGridExample": f = new Frm.UserSet(); break; case "1": break; case "2": break; case "3": break; case "4": break; case "5": break; default: break; } //for (int i = 0; i < this.tabControl1.Tabs.Count; i++) //{//已經打開了 就默認選中便可了 // if (tabControl1.Tabs[i].Text == menuItemTxt) // { // this.tabControl1.SelectedTab = tabControl1.Tabs[i]; // return; // } //} //f.TopLevel = false; //f.FormBorderStyle = FormBorderStyle.None; //f.WindowState = FormWindowState.Maximized; //TabPage Page = new TabPage(); //Page.Name = "Page" + index.ToString(); //Page.Text = menuItemTxt.ToString(); //Page.TabIndex = index; //// tabControl1.TabPages[0].Controls.Add(f); //Page.Controls.Add(f); //this.tabControl1.Controls.Add(Page); //f.TopLevel = false; //f.FormBorderStyle = FormBorderStyle.None; //f.WindowState = FormWindowState.Maximized; //TabItem it = new TabItem(); //it.Text = menuItemTxt.ToString(); //it.Name = "Page" + index.ToString(); //TabPage p = new TabPage(); //p.Container.Add(); //this.tabControl1.Tabs.Add(it); //#region 三種設置某個選項卡爲當前選項卡的方法 ////this.tabControl1.SelectedIndex = index; ////this.tabControl1.SelectTab("Page" + index.ToString()); //#endregion //this.tabControl1.SelectedTabIndex = index; //f.Show(); //index++; AddForm(f); } private void AddForm(DevComponents.DotNetBar.Office2007Form frm) { this.tabControl1.Visible = true; if (!IsOpenTab(frm.Text)) { DevComponents.DotNetBar.TabItem tabItem = tabControl1.CreateTab(frm.Text); DevComponents.DotNetBar.TabControlPanel tcp = new DevComponents.DotNetBar.TabControlPanel(); tabItem.AttachedControl = tcp; tcp.TabItem = tabItem; tcp.Dock = DockStyle.Fill; tcp.Name = frm.Name + "Tab"; frm.TopLevel = false; frm.Dock = DockStyle.Fill; frm.FormBorderStyle = FormBorderStyle.None; frm.Show(); tcp.Controls.Add(frm); tabControl1.Controls.Add(tcp); tabControl1.SelectedTab = tabItem; } } /// <summary> /// 檢查是否已打開某個子窗體 ///</summary> /// <param name="tabName"></param> /// <returns></returns> private bool IsOpenTab(string tabName) { bool isOpened = false; foreach (DevComponents.DotNetBar.TabItem tab in tabControl1.Tabs) { if (tab.Text.Trim() == tabName.Trim()) { isOpened = true; tabControl1.SelectedTab = tab; break; } } return isOpened; } #endregion