/// <summary> /// 動態加載菜單 /// </summary> private void GetMenuBind() { //根據登錄用戶角色菜單動態創建 //循環創建卡菜單 DataTable baseModuleDT = BLL.BaseModule.GetDataTable("LevelNo=1", ""); for (int i = 0; i < baseModuleDT.Rows.Count; i++) { //創建卡 RibbonPage ribbonPage = new DevExpress.XtraBars.Ribbon.RibbonPage();//菜單卡對象定義 ribbonPage.Text = baseModuleDT.Rows[i]["FullName"].ToString(); this.ribbon.Pages.Add(ribbonPage); //獲取組菜單 DataTable baseModuleDTG = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDT.Rows[i]["Id"].ToString() + " and LevelNo=2", ""); if (baseModuleDTG.Rows.Count <= 0) { //沒有組 RibbonPageGroup ribbonPageGroup = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();//菜單卡分組定義 ribbonPageGroup.Text = baseModuleDT.Rows[i]["FullName"].ToString();//卡片組名 ribbonPage.Groups.Add(ribbonPageGroup); DataTable baseModuleDTB = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDT.Rows[i]["Id"].ToString() + " and LevelNo=3", ""); for (int b = 0; b < baseModuleDTB.Rows.Count; b++) { Image image = Image.FromFile(filePath + baseModuleDTB.Rows[b]["MenuIco"].ToString());//獲取文件 //功能按鈕 BarButtonItem barButtonItem = new DevExpress.XtraBars.BarButtonItem(); barButtonItem.Caption = baseModuleDTB.Rows[b]["FullName"].ToString(); barButtonItem.LargeGlyph = image;// global::MemberManager.Properties.Resources.group_key; barButtonItem.Name = baseModuleDTB.Rows[b]["WinFrom"].ToString(); barButtonItem.Tag = baseModuleDTB.Rows[b]["WinFrom"].ToString().Substring(0, baseModuleDTB.Rows[b]["WinFrom"].ToString().IndexOf('.'));//截取文件名點以前的 ribbonPageGroup.ItemLinks.Add(barButtonItem); barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注冊事件 } } else { for (int g = 0; g < baseModuleDTG.Rows.Count; g++) { //創建組 RibbonPageGroup ribbonPageGroup = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();//菜單卡分組定義 ribbonPageGroup.Text = baseModuleDTG.Rows[g]["FullName"].ToString();//卡片組名 ribbonPage.Groups.Add(ribbonPageGroup); DataTable baseModuleDTB = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDTG.Rows[g]["Id"].ToString() + " and LevelNo=3", ""); for (int b = 0; b < baseModuleDTB.Rows.Count; b++) { Image image = Image.FromFile(filePath + baseModuleDTB.Rows[b]["MenuIco"].ToString());//獲取文件 //功能按鈕 BarButtonItem barButtonItem = new DevExpress.XtraBars.BarButtonItem(); barButtonItem.Caption = baseModuleDTB.Rows[b]["FullName"].ToString(); barButtonItem.LargeGlyph = image;// global::MemberManager.Properties.Resources.group_key; barButtonItem.Name = baseModuleDTB.Rows[b]["WinFrom"].ToString(); //barButtonItem.Tag = baseModuleDTB.Rows[b]["WinFrom"].ToString().Substring(0, baseModuleDTB.Rows[b]["WinFrom"].ToString().IndexOf('.'));//截取文件名點以前的 ribbonPageGroup.ItemLinks.Add(barButtonItem); barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注冊事件 } } } } } /// <summary> /// 動態調出窗體事件 注:動態調用窗體名需和數據庫中名稱完全一致 /// </summary> private void barButtonItem_ItemClick(object sender, ItemClickEventArgs e) { if (!ShowChildrenForm(e.Item.Tag.ToString())) { if (this.MdiChildren.Length < childFormMaxNumber) { DictItemUtil.AddLog("成功打開" + e.Item.Caption.ToString()); Assembly asm = Assembly.Load("MemberManager");//程序集名 object frmObj = asm.CreateInstance("MemberManager." + e.Item.Tag.ToString());//程序集+form的類名。 Form childForm = (Form)frmObj; childForm.Tag = e.Item.Tag.ToString(); //tag屬性要重新寫一次,否則在第二次的時候取不到。原因還不清楚。有知道的望告知。 childForm.MdiParent = this; childForm.Show(); } else MessageUtil.ShowWarning(message); } }