动态创建菜单,menustrip,根据权限显示菜单,控制菜单可用,反射,给窗体传值,反射对象传值,public static Object CreateInstance ( Type type, pa



        public void LoadMenuRightsItem(MenuStrip msCurrentMenu, ListBox listBox)//, List<Rights> rightCollection)
        {
            string conStr = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString;
            ToolStripMenuItem MenuItem = null;


            using (SqlConnection con = new SqlConnection(conStr))
            {
                string sql = "select sf.NodeID, sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join R_UserInfo_SysFun rus on ui.ID=rus.UserInfoID left outer join SysFun sf on rus.SysFunID=sf.NodeID where ui.ID=1 union select sf.NodeID ,sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join User_Roles ur on ui.ID=ur.UserID left outer join Roles r on ur.RoleID=r.ID left outer join Roles_SysFun rs on r.ID=rs.RolesID Right outer join SysFun sf on rs.SysFunID=sf.NodeID where ui.ID=1";
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        if (reader["ParentNodeID"].ToString() == "0")
                        {
                            ToolStripMenuItem mItem;
                            mItem = new ToolStripMenuItem(reader["DisplayName"].ToString());
                            msCurrentMenu.Items.Add(mItem);
                            SetSubMenu(mItem, reader["NodeID"].ToString());
                            //SetSubMenu((ToolStripMenuItem)msCurrentMenu.Items[reader["DisplayName"].ToString()], reader["NodeID"].ToString());
                        }


                    }
                }
            }
        }
        /// <summary>
        /// 创建子菜单
        /// </summary>
        /// <param name="mItem">要创建的子菜单的父项</param>
        /// <param name="mName>要创建的子菜单的父项名称</param>
        public void SetSubMenu(ToolStripMenuItem mItem, string mName)
        {
            try
            {
                string conStr = ConfigurationManager.ConnectionStrings["SQLSERVER"].ConnectionString;
                ToolStripMenuItem MenuItem = null;


                using (SqlConnection con = new SqlConnection(conStr))
                {
                    string sql = "select sf.NodeID, sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join R_UserInfo_SysFun rus on ui.ID=rus.UserInfoID left outer join SysFun sf on rus.SysFunID=sf.NodeID where ui.ID=1 union select sf.NodeID ,sf.DisplayName,sf.FullFrmName,sf.NameSpaceName,sf.ParentNodeID,sf.EventName from UserInfo ui left outer join User_Roles ur on ui.ID=ur.UserID left outer join Roles r on ur.RoleID=r.ID left outer join Roles_SysFun rs on r.ID=rs.RolesID Right outer join SysFun sf on rs.SysFunID=sf.NodeID where ui.ID=1";
                    using (SqlCommand cmd = new SqlCommand(sql, con))
                    {
                        con.Open();
                        SqlDataReader reader = cmd.ExecuteReader();
                        while (reader.Read())
                        {


                            if (reader["ParentNodeID"].ToString() == mName)
                            {
                                ToolStripMenuItem mSubItem;
                                EventHandler eh = GetEvent(reader["EventName"].ToString());
                                mSubItem = new ToolStripMenuItem(reader["DisplayName"].ToString(), null, eh); //
                                mItem.DropDownItems.Add(mSubItem);
                                // SetSubMenu((ToolStripMenuItem)mItem.DropDownItems[reader["DisplayName"].ToString()],reader["DisplayName"].ToString());
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }


       


        public EventHandler GetEvent(string eventName)
        {
            EventHandler eh = null;
            switch (eventName.ToString())
            {
                case "DeptInfoClicked":
                    eh = new EventHandler(DeptInfoClicked);
                    break;
                default:
                    eh = null;
                    break;
            }
            return eh;
        }


        public void DeptInfoClicked(object sender, EventArgs e)
        {
            MessageBox.Show("DeptInfoClicked");
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值