• 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
  • 相关阅读:
    bootstrutp module 显示隐藏 模态框
    手机app传统邀请码安装与免邀请码安装区别,如何选择呢?
    好用的一些开源系统
    一个搞笑的招聘启事
    java和android及IOS对接RSA加密经验
    mysql大数据表改表结构方案
    android开发中监控android软件网络请求的软件Charles使用入门
    android IOC框架学习记录
    java分布式事务
    十八届三中全会的综合改革方案将涉及哪些内容?(转自知乎)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2543260.html
Copyright © 2020-2023  润新知