一、效果图,动态加载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 = ; i <; 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

C#自定义控件、用户控件、动态加载菜单按钮的更多相关文章

  1. Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子

    Delphi7 第三方控件1stClass4000的TfcImageBtn按钮控件动态加载jpg图片例子 procedure TForm1.Button1Click(Sender: TObject); ...

  2. Asp.net 的DropDownList 控件动态加载

    在做连接数据库表,在页面上用DropDownList 下拉框查询某条数据时,因为数据库里的数据,随时都有可能增加或减少,而下拉框关联的某个字段的值并不一定是固定的. 表信息: CREATE TABLE ...

  3. 重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图

    原文:重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 Web ...

  4. easyui控件的加载顺序

    使用easyui做布局时,会模仿窗口程序界面,做出一些较复杂的布局.按由外层到内层的顺序: (最外层)panel->tabs->tabs1 ->tabs2->layout-&g ...

  5. 使用DevExpress.XtraTabbedMdi.XtraTabbedMdiManager控件来加载MDI窗体

    使用DevExpress.XtraTabbedMdi.XtraTabbedMdiManager控件来加载MDI窗体     [csharp] view plaincopyprint? <SPAN ...

  6. Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单

    在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...

  7. C#遍历XML文件动态加载菜单

    通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...

  8. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  9. Vue + Element UI 实现权限管理系统(动态加载菜单)

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

随机推荐

  1. vi命令详解(转)

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  2. Java工程师必备

    Java工程师必备 JAVA基础扎实,熟悉JVM,熟悉网络.多线程.分布式编程及性能调优 精通Java EE相关技术 熟练运用Spring/SpringBoot/MyBatis等基础框架 熟悉分布式系 ...

  3. JSON库的使用研究(三)

    怎么选择JSON库? 从整体测试结果来看,总结如下: 用于序列化.反序列的功能,数量量小,吞吐量不大于10000每秒的,选择gson: 用于解析JSON的,还是用Fastjson吧,虽然听说坑很多. ...

  4. Python并发目录

    Python并发目录 Python-socket网络编程 Python网络编程-IO阻塞与非阻塞及多路复用 Python进程-理论 Python进程-实现 Python进程间通信 Python进程池 ...

  5. odoo开发笔记 -- many2one搜索更多增加默认过滤条件

    没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板: 改进方法(增加默认过滤条件,显示指定模型下的内容): class IrCloudReport(models.Model): _ ...

  6. mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)

    一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...

  7. Android--多线程之进程与线程

    前言 对于Android程序中,使用多线程的技术是必不可少的,就拿之前最简单的例子来说明,对于Android4.0+的应用而言,访问网络必须另起线程才可以访问.本片博客介绍Android下进程和线程, ...

  8. 译《The Part-Time Parliament》——终于读懂了Paxos协议!

    最近的考古发现表明,在Paxos小岛上,尽管兼职议会成员都有逍遥癖,但议会模式仍然起作用.他们依旧保持了一致的会议记录,尽管他们频繁的进出会议室并且他们的信使还很健忘.Paxon议会协议提供了一种新方 ...

  9. Spring Boot 系列(七)Swagger2-生成RESTful接口文档

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...

  10. JavaScript中常见的十五种设计模式

    在程序设计中有很多实用的设计模式,而其中大部分语言的实现都是基于“类”. 在JavaScript中并没有类这种概念,JS中的函数属于一等对象,在JS中定义一个对象非常简单(var obj = {}), ...