C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
2017-09-22 15:13
513 查看
简要说明: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
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
相关文章推荐
- C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 利用explorerBar实现动态的菜单栏,并创建触发事件
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- C# WinForm 用MenuStrip动态生成菜单并动态加载事件
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- 利用explorerBar实现动态的菜单栏,并创建触发事件
- 【C#利用后台动态加载数据】Winform“防界面卡死”
- (转)【C#利用后台动态加载数据】Winform“防界面卡死”
- C# 利用反射动态创建对象——带参数的构造函数和String类型
- 带有button而且能够运行单击事件的WINFORM窗口,体悟C#的创建过程
- silverlight动态创建控件及控件事件动态指定(c#)
- C# WinForm启动时的事件加载次序
- C# 利用反射动态创建对象[摘录]
- C#中动态创建控件及事件处理程序
- c#中如何利用反射动态加载程序集
- C#动态创建控件之事件响应(刚刚答复提问,正好一并录之)
- C#利用反射技术实现winform界面动态存储
- 利用Asp.net 动态创建DataList ——C#