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;

                   //给出部分信息

            }

          }

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

posted on 2012-06-09 09:46  rikou  阅读(3110)  评论(7编辑  收藏  举报

导航