您好,登錄后才能下訂單哦!
SideBar已經(jīng)玩過怎么實(shí)現(xiàn)動(dòng)態(tài)菜單欄了. 那么利用explorerBar控件如何實(shí)現(xiàn)? 廢話不說了,直接上代碼.
#region 菜單定義 private DataTable dt_role = new DataTable(); private SqlDB SQL_Base = new SqlDB(); string strMenu = string.Empty;//用于臨時(shí)保存主模塊名稱 ExplorerBarGroupItem groupBox1; ButtonItem buttonItem1; ExplorerBarGroupItem groupBox2 = null;//用于臨時(shí)保存主模塊的控件類型 #endregion
#region 左邊菜單欄設(shè)置,因?yàn)閐ockPanel布局是以這個(gè)作主界面的,所以利用函數(shù),傳用WinForm名稱。 private Dictionary<string, DockContent> m_FunctionName = new Dictionary<string, DockContent>(); /// <summary> /// 傳入Form名稱,調(diào)用時(shí)直接打開Form,并顯示在dockPanel布局里面。(左邊菜單欄設(shè)置) /// </summary> /// <param name="frmName"></param> public void showFunctionFrm(string frmName) { if (!m_FunctionName.ContainsKey(frmName)) { m_FunctionName.Add(frmName, null); } if (m_FunctionName[frmName] == null || m_FunctionName[frmName].IsDisposed)//如果已經(jīng)打的Form,則不再打開。 { ObjectHandle obj = Activator.CreateInstance(Assembly.GetExecutingAssembly().GetName().Name, frmName); m_FunctionName[frmName] = (DockContent)obj.Unwrap(); } m_FunctionName[frmName].AutoHidePortion = 0.15; m_FunctionName[frmName].Show(dockPanel1, DockState.Document); } #endregion
#region 顯示菜單函數(shù) private void Menu_Load() { dt_role = SQL_Base._GetUserRole(SessionInfo._GroupID);//查找登錄者的權(quán)限 for (int i = 0; i < dt_role.Rows.Count; i++) { //if用于判斷,如果是相同主模塊,則不再重復(fù)添加控件。 if (string.IsNullOrEmpty(strMenu) || strMenu != dt_role.Rows[i]["c_MenuGroupName"].ToString()) { groupBox1 = new ExplorerBarGroupItem(); groupBox1.SetDefaultAppearance(); groupBox1.Expanded = true; groupBox1.Text = strMenu = dt_role.Rows[i]["c_MenuGroupName"].ToString(); groupBox1.Tag = dt_role.Rows[i]["c_MenuGroupName"].ToString(); explorerBar1.Groups.AddRange(new ExplorerBarGroupItem[] { groupBox1 }); buttonItem1 = new ButtonItem(); buttonItem1.Text = dt_role.Rows[i]["c_FunctionName"].ToString(); buttonItem1.Tag = dt_role.Rows[i]["c_FrmName"].ToString(); buttonItem1.Click += new System.EventHandler(Bar_ItemClicked); groupBox1.SubItems.AddRange(new ButtonItem[] { buttonItem1 }); groupBox2 = groupBox1; } else if (strMenu == dt_role.Rows[i]["c_MenuGroupName"].ToString()) { buttonItem1 = new ButtonItem(); buttonItem1.Text = dt_role.Rows[i]["c_FunctionName"].ToString(); buttonItem1.Tag = dt_role.Rows[i]["c_FrmName"].ToString(); buttonItem1.Click += new System.EventHandler(Bar_ItemClicked); groupBox2.SubItems.AddRange(new ButtonItem[] { buttonItem1 }); } } } #endregion #region 創(chuàng)建子模塊的當(dāng)前事件 private void Bar_ItemClicked(object sender, EventArgs e) { //傳入object類型,判斷哪個(gè)子模塊觸發(fā)了當(dāng)前事件。 ButtonItem ccim = (ButtonItem)sender; if (ccim.Tag.ToString().Trim() != "") { showFunctionFrm(ccim.Tag.ToString().Trim());//傳入WinForm名稱 } } #endregion
感謝Allen
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。