Winform 使用DotNetBar 根據菜單加載TabControl

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
相關文章
相關標籤/搜索