Devexpress-xtraTabControl1

 
/// <summary>
        /// 动态添加tabpage
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ItemKuFangGuanLi_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            string name = e.Link.Caption;
            //判断是否已创建过
            foreach (XtraTabPage page in xtraTabControl1.TabPages)
            {
                if (page.Text == name)
                {
                    xtraTabControl1.SelectedTabPage = page;//显示该页
                    return;
                }
            }
            //增加tabpage
            XtraTabPage xpage = new XtraTabPage();
            xpage.Name = name;
            xpage.Text = name;
            //向xtraTabControl1中添加窗体
            FrmKuFangGuanLi frm = new FrmKuFangGuanLi();
            frm.Visible = true;
            frm.Dock = DockStyle.Fill;
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.TopLevel = false;//在这里一定要注意  负责是加载不出来的  
            xpage.Controls.Add(frm);//添加要增加的控件
            xtraTabControl1.TabPages.Add(xpage);
            xtraTabControl1.SelectedTabPage = xpage;//显示该页
        }
       public void OpenMdiFormToSuperTabControl(DevExpress.XtraTab.XtraTabControl NavTabControl, ModuleInfo mInfo)
       {
           string name = mInfo.CasesName;
           //判断是否已创建过
           foreach (DevExpress.XtraTab.XtraTabPage page in NavTabControl.TabPages)
           {
               if (page.Text == name)
               {
                   NavTabControl.SelectedTabPage = page;//显示该页
                   return;
               }
           }
           //增加tabpage
           DevExpress.XtraTab.XtraTabPage xpage = new DevExpress.XtraTab.XtraTabPage();
           xpage.Name = name;
           xpage.Text = name;
           //向xtraTabControl1中添加窗体
           string assemblyPath = mInfo.Cases.Substring(0, mInfo.Cases.IndexOf(".dll"));
           System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\Plugin\"+assemblyPath + ".dll");
           // 获取类型
           string formClassName = mInfo.Cases.Substring(mInfo.Cases.IndexOf(".dll") + 5, mInfo.Cases.Length - (mInfo.Cases.IndexOf(".dll") + 5));
           Type type = Type.GetType(formClassName);
           var childForm = Activator.CreateInstance(type) as Form;
           childForm.Tag = mInfo.CasesName;  //tag属性要重新写一次,否则在第二次的时候取不到。原因还不清楚。有知道的望告知。
           childForm.Visible = true;
           childForm.Dock = DockStyle.Fill;
           childForm.FormBorderStyle = FormBorderStyle.None;
           childForm.TopLevel = false;//在这里一定要注意  负责是加载不出来的  
           xpage.Controls.Add(childForm);//添加要增加的控件
           NavTabControl.TabPages.Add(xpage);
           NavTabControl.SelectedTabPage = xpage;//显示该页

       }
/// <summary>
        /// 移除tabpage
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void xtraTabControl1_CloseButtonClick(object sender, EventArgs e)
        {
            DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs eArg = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e;
            string name = eArg.Page.Text;//得到关闭的选项卡的text  
            foreach (XtraTabPage page in xtraTabControl1.TabPages)//遍历得到和关闭的选项卡一样的Text  
            {
                if (page.Text == name)
                {
                    xtraTabControl1.TabPages.Remove(page);
                    page.Dispose();
                    return;
                }
            }
        }
        private void barButtonItemClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (this.Parent!=null)
            {
                DevExpress.XtraTab.XtraTabControl tab = new DevExpress.XtraTab.XtraTabControl();
                tab = (DevExpress.XtraTab.XtraTabControl)this.Parent.Parent;
                DevExpress.XtraTab.XtraTabPage item = (DevExpress.XtraTab.XtraTabPage)this.Parent;
                tab.TabPages.Remove(item);
                item.Dispose();
            }
        }
原文地址:https://www.cnblogs.com/wangyinlon/p/10906727.html