简要说明:SessionInfo,用于临时保存信息。

SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//根据窗体全称,打开窗体。

#region定义privateDataTabledt_role=newDataTable();privateSQLBaseSQL_Base=newSQLBase();stringstrMenu=string.Empty;//用于临时保存主模块名称SideBarPanelItemsideBarPanel1;ControlContainerItemconCI;SideBarPanelItemsideBarPanel2=null;//用于临时保存主模块的控件类型#endregion#region显示函数privatevoidMenu_Load(){dt_role=SQL_Base._GetUserRole(SessionInfo._GroupID);//根据分组,查找登录者的权限for(inti=0;i<dt_role.Rows.Count;i++){//if用于判断,如果是相同主模块,则不再重复添加控件。if(string.IsNullOrEmpty(strMenu)||strMenu!=dt_role.Rows[i]["c_MenuGroupName"].ToString()){sideBarPanel1=newSideBarPanelItem();//创建主模块控件sideBarPanel1.Text=strMenu=dt_role.Rows[i]["c_MenuGroupName"].ToString();//设置控件内容,并临时保存主模块标题sideBarPanel1.Tag=dt_role.Rows[i]["c_MenuGroupName"].ToString();//设置控件内容sideBar1.Panels.AddRange(newBaseItem[]{sideBarPanel1});//添加主模块控件conCI=newControlContainerItem();//创建子模块控件conCI.Text=dt_role.Rows[i]["c_FunctionName"].ToString();//设置控件内容conCI.Tag=dt_role.Rows[i]["c_FrmName"].ToString();//设置点击时,要打开哪个窗体(保存WinForm全称)。conCI.Click+=newSystem.EventHandler(Bar_ItemClicked);//添加事件sideBarPanel1.SubItems.AddRange(newBaseItem[]{conCI});//添加子模块控件sideBarPanel2=sideBarPanel1;//用于临时保存主模块的控件类型}elseif(strMenu==dt_role.Rows[i]["c_MenuGroupName"].ToString()){//如果是相同的主模块,则不再New主模块,直接利用临时保存的sideBarPanel2加载子模块。conCI=newControlContainerItem();//创建子模块控件conCI.Text=dt_role.Rows[i]["c_FunctionName"].ToString();//设置控件内容conCI.Tag=dt_role.Rows[i]["c_FrmName"].ToString();//设置点击时,要打开哪个窗体(保存WinForm全称)。conCI.Click+=newSystem.EventHandler(Bar_ItemClicked);//添加事件sideBarPanel2.SubItems.AddRange(newBaseItem[]{conCI});//添加子模块控件}}}#endregion#region创建子模块的当前事件privatevoidBar_ItemClicked(objectsender,EventArgse){//传入object类型,判断哪个子模块触发了当前事件。ControlContainerItemccim=(ControlContainerItem)sender;if(ccim.Tag.ToString().Trim()!=""){SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//传入WinForm名称}}#endregion