C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件

来源:互联网 发布:mac dns设置多少 编辑:程序博客网 时间:2024/05/17 18:13

        简要说明: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


本文出自 “9212950” 博客,请务必保留此出处http://9222950.blog.51cto.com/9212950/1564730