簡要說明:SessionInfo,用於臨時保存信息。
SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//根據窗體全稱,打開窗體。
#region 定義 private DataTable dt_role = new DataTable(); private SQLBase SQL_Base = new SQLBase(); string strMenu = string.Empty;//用於臨時保存主模塊名稱 SideBarPanelItem sideBarPanel1; ControlContainerItem conCI; SideBarPanelItem sideBarPanel2 = null;//用於臨時保存主模塊的控件類型 #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()) { sideBarPanel1 = new SideBarPanelItem();//創建主模塊控件 sideBarPanel1.Text = strMenu = dt_role.Rows[i]["c_MenuGroupName"].ToString();//設置控件內容,並臨時保存主模塊標題 sideBarPanel1.Tag=dt_role.Rows[i]["c_MenuGroupName"].ToString();//設置控件內容 sideBar1.Panels.AddRange(new BaseItem[] { sideBarPanel1 });//添加主模塊控件 conCI = new ControlContainerItem();//創建子模塊控件 conCI.Text = dt_role.Rows[i]["c_FunctionName"].ToString();//設置控件內容 conCI.Tag = dt_role.Rows[i]["c_FrmName"].ToString();//設置點擊時,要打開哪個窗體(保存WinForm全稱)。 conCI.Click += new System.EventHandler(Bar_ItemClicked);//添加事件 sideBarPanel1.SubItems.AddRange(new BaseItem[] { conCI });//添加子模塊控件 sideBarPanel2 = sideBarPanel1;//用於臨時保存主模塊的控件類型 } else if(strMenu == dt_role.Rows[i]["c_MenuGroupName"].ToString()) { //如果是相同的主模塊,則不再New主模塊,直接利用臨時保存的sideBarPanel2加載子模塊。 conCI = new ControlContainerItem();//創建子模塊控件 conCI.Text = dt_role.Rows[i]["c_FunctionName"].ToString();//設置控件內容 conCI.Tag = dt_role.Rows[i]["c_FrmName"].ToString();//設置點擊時,要打開哪個窗體(保存WinForm全稱)。 conCI.Click += new System.EventHandler(Bar_ItemClicked);//添加事件 sideBarPanel2.SubItems.AddRange(new BaseItem[] { conCI });//添加子模塊控件 } } } #endregion #region 創建子模塊的當前事件 private void Bar_ItemClicked(object sender, EventArgs e) { //傳入object類型,判斷哪個子模塊觸發了當前事件。 ControlContainerItem ccim = (ControlContainerItem)sender; if (ccim.Tag.ToString().Trim() != "") { SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//傳入WinForm名稱 } } #endregion