C#实现Winform动态添加菜单的方法
程序员文章站
2022-08-03 21:37:25
本文实例讲述了c#实现winform动态添加菜单的方法。分享给大家供大家参考。具体分析如下:
最近在做winform开发,一直都在为主界面的点击事件及动态加载菜单苦脑。现...
本文实例讲述了c#实现winform动态添加菜单的方法。分享给大家供大家参考。具体分析如下:
最近在做winform开发,一直都在为主界面的点击事件及动态加载菜单苦脑。现在已解决这个问题了,可以实现数据库或都xml等配置完成动态生成菜单及事件加载。代码如下:
private void form1_load(object sender, eventargs e) { //添加菜单一 toolstripmenuitem subitem; subitem = addcontextmenu("入库", menustrip1.items, null); //添加子菜单 addcontextmenu("添加入库", subitem.dropdownitems, new eventhandler(menuclicked)); addcontextmenu("入库管理", subitem.dropdownitems, new eventhandler(menuclicked)); //添加菜单二 subitem = addcontextmenu("出库", menustrip1.items, null); //添加子菜单 addcontextmenu("添加出库", subitem.dropdownitems, new eventhandler(menuclicked)); addcontextmenu("出库管理", subitem.dropdownitems, new eventhandler(menuclicked)); } /// <summary> /// 添加子菜单 /// </summary> /// <param name="text">要显示的文字,如果为 - 则显示为分割线</param> /// <param name="cms">要添加到的子菜单集合</param> /// <param name="callback">点击时触发的事件</param> /// <returns>生成的子菜单,如果为分隔条则返回null</returns> toolstripmenuitem addcontextmenu(string text, toolstripitemcollection cms, eventhandler callback) { if (text == "-") { toolstripseparator tsp = new toolstripseparator(); cms.add(tsp); return null; } else if (!string.isnullorempty(text)) { toolstripmenuitem tsmi = new toolstripmenuitem(text); tsmi.tag = text + "tag"; if (callback != null) tsmi.click += callback; cms.add(tsmi); return tsmi; } return null; } void menuclicked(object sender, eventargs e) { //以下主要是动态生成事件并打开窗体 //((sender as toolstripmenuitem).tag)强制转换 objecthandle t = activator.createinstance("winforms", "winforms.form2"); form f = (form)t.unwrap(); f.showdialog(); }
希望本文所述对大家的c#程序设计有所帮助。
上一篇: 中医针灸 将水肿刺破
下一篇: C#检测上传文件真正类型的方法