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