您好,登錄后才能下訂單哦!
SideBar已經玩過怎么實現動態菜單欄了. 那么利用explorerBar控件如何實現? 廢話不說了,直接上代碼.
#region 菜單定義 private DataTable dt_role = new DataTable(); private SqlDB SQL_Base = new SqlDB(); string strMenu = string.Empty;//用于臨時保存主模塊名稱 ExplorerBarGroupItem groupBox1; ButtonItem buttonItem1; ExplorerBarGroupItem groupBox2 = null;//用于臨時保存主模塊的控件類型 #endregion
#region 左邊菜單欄設置,因為dockPanel布局是以這個作主界面的,所以利用函數,傳用WinForm名稱。 private Dictionary<string, DockContent> m_FunctionName = new Dictionary<string, DockContent>(); /// <summary> /// 傳入Form名稱,調用時直接打開Form,并顯示在dockPanel布局里面。(左邊菜單欄設置) /// </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)//如果已經打的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 顯示菜單函數 private void Menu_Load() { dt_role = SQL_Base._GetUserRole(SessionInfo._GroupID);//查找登錄者的權限 for (int i = 0; i < dt_role.Rows.Count; i++) { //if用于判斷,如果是相同主模塊,則不再重復添加控件。 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 創建子模塊的當前事件 private void Bar_ItemClicked(object sender, EventArgs e) { //傳入object類型,判斷哪個子模塊觸發了當前事件。 ButtonItem ccim = (ButtonItem)sender; if (ccim.Tag.ToString().Trim() != "") { showFunctionFrm(ccim.Tag.ToString().Trim());//傳入WinForm名稱 } } #endregion
感謝Allen
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。