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
  • 相关阅读:
    chapter02“良/恶性乳腺癌肿瘤预测”的问题
    ASCII编码和Unicode编码的区别
    Spring AOP概述
    Spring 基于注解的配置
    Spring Bean作用域&FactoryBean
    Spring <bean> 之间的关系&整合多个配置文件
    Spring 方法注入
    Spring 简化装配Bean的配置方式
    Spring 注入参数详解
    vue-router 导航守卫
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2543260.html
Copyright © 2011-2022 走看看