C#自定义控件、用户控件、动态加载菜单按钮

一、效果图,动态加载5个菜单按钮;

二、实现方法

  1、创建用户控件

  2、在用户控件拖入toolStrip

  3、进入用户控件的Lood事件,这里自动添加5个选  ToolStripMenuItem,后期大家自己可以扩展这个方法。  

    自定义控件效果图:

    

        /// <summary>
        /// 控件加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LanMenu_Load(object sender, EventArgs e)
        {
            for (int i = 0; i <5; i++)
            {
                ToolStripMenuItem Nbi = new ToolStripMenuItem();
                Nbi.Text ="测试"+i;
                Nbi.Name ="TStest"+i;//按钮名称  
                Nbi.Click += Nbi_Click;
                this.toolStrip1.Items.Add(Nbi);
            }
        }
        /// <summary>
        /// ToolStripMenuItem 动态添加的 每个按钮的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Nbi_Click(object sender, EventArgs e)
        {
            if (UserControlMenuItemClick != null)
                UserControlMenuItemClick(sender, e);
        }

  4、定义委托和事件

        //定义事件
        public event StripMenuItemClick UserControlMenuItemClick;
        //定义委托
        public delegate void StripMenuItemClick(object sender, EventArgs e); 

  5、将自定义控件拖到窗体里面效果图:

    这些测试按钮,是在第三点的时候添加的,后期可以不要第3点的添加按钮的方法,可以设计数据库,或者其他文件里面读取数据,自动添加按钮。

    

  6、自定义控件里面的每一个按钮的点击事件,在自定义控件属性事件里面找到我们定义的控件,双击进入。

    

    编辑代码:    

        /// <summary>
        /// 自定义控件里面的按钮的点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lanMenu1_UserControlMenuItemClick(object sender, EventArgs e)
        {
            //获取当前点击的是自定义控件里面的哪一个按钮
            ToolStripMenuItem Nbi = (ToolStripMenuItem)sender;
            //弹出按钮的名称、按钮上面的文本
            MessageBox.Show(Nbi.Name + ":" + Nbi.Text);
        }

  7、最终显示效果:

    点击“测试0按钮”

    

    点击“测试1按钮”

           

程序源码:下 载 地 址

我的TB地址:https://shop115363898.taobao.com/?spm=a313o.7775905.1998679131.d0011.NJTv4h

原文地址:https://www.cnblogs.com/lanyubaicl/p/5691293.html