zoukankan      html  css  js  c++  java
  • C# menu动态生成

    在权限管理中动态生成菜单的步骤:

    1.获取角色对应的菜单集合

    2.遍历父菜单生成窗体父菜单

    3.遍历子菜单生成窗体对应的子菜单

    说明:在生成子菜单的时候要给对应的子菜单绑定事件,事件可以提前定义好,然后直接绑定。

    部分代码:

            //根据登录用户Id获取角色集合

            var roleMenus = RoleMenusBll.GetByRPid((int)Users.URid);
                if(roleMenus.Count==0)
                {
                    MessageHelp.PromptMessage("登录用户没有设置任何权限,请联系管理员!");
                    Close();
                }
                var parentMeuns = roleMenus.Where(o => o.Menus.MParentID == 0).ToList();

                //遍历父角色集合
                foreach (var parentMeun in parentMeuns)
                {
                    var parentToolMeun = new ToolStripMenuItem() {Text = parentMeun.Menus.MName};
                    SetParentMenu(parentToolMeun);

                    var childMenus = roleMenus.Where(o => o.Menus.MParentID == parentMeun.Menus.Pid);

                    //遍历子角色结合

                    foreach (var cm in childMenus)
                    {
                        var childToolMenu = new ToolStripMenuItem() {Text = cm.Menus.MName};
                        SetChildMenu(childToolMenu);
                        parentToolMeun.DropDownItems.Add(childToolMenu);
                    }

                    menuStripMain.Items.Add(parentToolMeun);
                }

            /// <summary>
            /// 设置父菜单信息
            /// </summary>
            /// <param name="tool"></param>
            private void SetParentMenu(ToolStripMenuItem tool)
            {
                switch (tool.Text)
                {
                    case "系统设置":
                        tool.Text += "(&S)";
                        break;

                   //只给出部分信息

                }

            }

            /// <summary>
            /// 设置子菜单信息
            /// </summary>
            /// <param name="tool"></param>
            private void SetChildMenu(ToolStripMenuItem tool)
            {
                switch (tool.Text)
                {
                    case "角色管理":
                        tool.Text += "(&R)";

                        //说明RoleToolMenuItemClick事件是预先定义好的
                        tool.Click += new EventHandler(RoleToolMenuItemClick);
                        break;

                       //给出部分信息

                }

              }

    这个功能很简单,希望对新手有帮助。

     
    分类: C# Winform
  • 相关阅读:
    创建表头固定,表体可滚动的GridView(转)
    正则表达式实现资料验证的技术总结 (转)
    通过样式表实现固定表头和列 (转)
    如何把string解析为int?(转)
    代码设计简单规范 (转)
    取存储过程结果集
    JS对select动态添加options操作[IE&FireFox兼容]
    多UpdatePanel
    ASP.NET页面如何引发PostBack事件 转
    asp.net 页面回传
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2543260.html
Copyright © 2011-2022 走看看