利用explorerBar实现动态的菜单栏,并创建触发事件
来源:互联网 发布:mac dns设置多少 编辑:程序博客网 时间:2024/06/11 20:57
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
本文出自 “9212950” 博客,请务必保留此出处http://9222950.blog.51cto.com/9212950/1603294
阅读全文
0 0
- 利用explorerBar实现动态的菜单栏,并创建触发事件
- C# WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件
- jquery中动态创建的元素的事件触发
- MFC动态创建控件并响应事件代码实现过程
- 利用JQuery实现简单的菜单栏导航
- 利用python检测IP地址变化并触发事件
- 动态创建Pivot控件的PivotItem,LoadedPivotItem事件第一次不触发的问题
- jquery 6 动态创建的元素的事件触发(转载)
- Select下拉框动态获取数据,并触发事件
- javaScript的on方法,动态触发事件
- 动态生成的元素无法触发事件
- 在控件的创建中触发事件
- jQuery中动态创建元素节点无法触发事件
- jQuery中动态创建元素节点无法触发事件
- jQuery中动态创建元素节点无法触发事件
- Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数
- 动态触发事件
- [ASP.NET]button 的动态生成以及触发事件的实现
- 了解SQL中 inner join、 left join 、right join、 outer join之间的区别
- linux下testlink环境搭建——踩坑爬坑
- Fiddler Web Debugger 利器使用
- C#WinForm利用DataGridView创作高级查询窗体
- linux内核中用到的好方法
- 利用explorerBar实现动态的菜单栏,并创建触发事件
- search-in-rotated-sorted-array-ii
- SCUT Training 20170920 Problem N
- C#WinForm 直接导出DataGridView数据到Excel表格的二种方法对比
- Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
- 如何区分一个FrameWork是动态链接库还是静态库
- 数据结构——非循环带头结点单链表的递归方法逆置
- 批量执行oracle的function
- Android UI开发细节Api使用技巧总结