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;

                   //給出部分信息

            }

          }

這個功能很簡單,希望對新手有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM