因項目需要要實現類似jquery的Tab效果,所以要用到xtraTabbedMdiManager控件
使用xtraTabbedMdiManager一般配合navBarControl(上期已寫過)
在工具箱xtraTabbedMdiManager拖到界面,在屬性中將MdiParent設置成(無)
大概代碼:
xtraTabbedMdiManager1.MdiParent = this; //設置控件的父表單.. XtraForm1 frm = new XtraForm1(); //定義一個form1窗體 frm.MdiParent = this; //設置新建窗體的父表單為當前活動窗口 xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[frm]; //使得標簽的選擇為當前新建的窗口 this.xtraTabbedMdiManager1.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InAllTabPagesAndTabControlHeader; //設置標簽后面添加刪除按鈕 , 多個標簽只需要設置一次..
具體代碼:
首先增加navBarControl控件
this.navBarControl1.Groups.Clear(); string strFrmName = "select top 10 ModuleCode,ModuleName,AssemblyName,FormName from [000].tbModule where AssemblyName='KidsServer'"; DataTable dtFrmName = DBHelper.SQLDBHelper.GetDataTable(strFrmName, DBHelper.SQLDBHelper.conStringHQ); NavBarGroup _navBarGroup = new NavBarGroup(); _navBarGroup.Name = "_navBarGroup"; _navBarGroup.Caption = "財務管理"; foreach (DataRow dr in dtFrmName.Rows) { NavBarItem _navBarItem = new NavBarItem(); _navBarItem.Name = dr["ModuleCode"].ToString(); _navBarItem.Caption = dr["ModuleName"].ToString(); string strFilePath = System.IO.Directory.GetCurrentDirectory() + @"\images\add.png"; // _navBarItem.LargeImage = Image.FromFile(strFilePath);//這里一直無法顯示圖片,不知道是不是我寫錯了還是什么 _navBarItem.LargeImageIndex = 0; _navBarItem.LinkClicked += new NavBarLinkEventHandler(_navBarItem_LinkClicked); _navBarGroup.ItemLinks.Add(_navBarItem); } navBarControl1.Groups.Add(_navBarGroup); _navBarGroup.Expanded = true;
NavBarItem事件(實現xtraTabbedMdiManager控件效果):
void _navBarItem_LinkClicked(object sender, NavBarLinkEventArgs e) { NavBarItem _navBarItem = (NavBarItem)sender; string strFrmName = string.Format("select ModuleCode,ModuleName,AssemblyName,FormName from [000].tbModule where ModuleCode = '{0}'", _navBarItem.Name); DataTable dtFrmName = DBHelper.SQLDBHelper.GetDataTable(strFrmName, DBHelper.SQLDBHelper.conStringHQ); string pathDll = Application.StartupPath + @"\" + dtFrmName.Rows[0]["AssemblyName"].ToString() + ".dll"; Assembly _assembly = Assembly.LoadFrom(pathDll); //定義一個"類型信息"的對象. Type t = _assembly.GetType(dtFrmName.Rows[0]["FormName"].ToString(), false, true);//就是這里,我獲取了dll的窗體名稱 ConstructorInfo cont = t.GetConstructor(new Type[0]); XtraForm xf = (XtraForm)cont.Invoke(new object[0]); //拖動xtraTabbedManager到窗體中,在屬性中將MdiParent設置成(無)... xtraTabbedMdiManager1.MdiParent = this; //設置控件的父表單.. xf.MdiParent = this; //設置新建窗體的父表單為當前活動窗口 xf.Show(); //以非模式窗口方式打開 xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[xf]; //使得標簽的選擇為當前新建的窗口 this.xtraTabbedMdiManager1.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InAllTabPagesAndTabControlHeader; //設置標簽后面添加刪除按鈕 , 多個標簽只需要設置一次.. }
效果如下: