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
  • 相关阅读:
    三角函数
    第十七次作业
    第十六次作业
    第15次作业
    第13次java作业
    第十二次java作业
    第十一次java作业
    第十次java作业
    第九次java
    第八次java作业
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2543260.html
Copyright © 2011-2022 走看看