因WinForm动态菜单而产生的几点疑惑

开发 开发工具
本文将介绍因WinForm动态菜单而产生的几点疑惑,也有热心的开发人员解答了作者的疑惑,希望本文对大家有所帮助。

WinForm动态菜单产生疑惑事件起因:

WinForm入门学习时,利用设计器制作菜单,在以后的快速原型测试中,也用这种方式。但项目实际开发的时候,都是希望用代码生成WinForm动态菜单。我们可以用数据库,XML来平行地存储菜单项,也可以用XML来层次地形象的存储菜单。

虽然XML的层次结构,与菜单结构像极了,几乎是“同构”的。但WinForm中的MenuStrip,并不支持数据绑定。
感叹:在算法设计和业务操作的时候,我们希望面向对象的严格,但在组合算法,集成业务,粘合界面的时候,我们需要"宏","marco","#define"动态特性,如javascript, foxpro中那样的灵活。
问题:

1. WinForm中,为什么就不能支持菜单的数据绑定和序列化?相比之下,Asp.Net快速开发中,数据绑定要支持的好得多,多不公平。

2. c#2太静态了,以至于把菜单和事件联系起来,太难了。有的用反射;有的对字符串进行判断,大量使用switch(menuStripItem.Text) case...无可奈何的重复。希望C#能动态些,再动态些。

3. vs2010中,能动态添加字符串 表示的类和方法么,实现如下需求么?

我们希望在数据库中有如下变量表:

变量类型 变量名称
List<int> list
我们希望在数据库中有如下方法表:
变量名称 执行方法 参数类型列表 参数值列表
list Add int 5
list Add int 8


根据 数据库,我们怎么把如字符串变成语句
"List<int> list = new List<int>;
list.Add(5);
list.Add(8);"

解答:对于不支持数据绑定,你可以自己写一个方法,用DATATABLE存储你的菜单结构,在菜单加载时你可以用XML化的DATATABLE进行加载,或者直接用DATATABLE进行加载。对于作者提出的第二个观点,我觉得是作者对菜单的事件绑定不太熟悉所导致的,至于用switch case结构,是作者自己的设计问题,用工厂模式就可以解决。

【编辑推荐】

  1. C#在WinForm开发中Label换行方法
  2. C#中使用多线程访问Winform问题解决方案
  3. 体验VS.NET 2005的winform新功能
  4. WinForm程序中使用控制台作为输出窗口
  5. 用Winform傻瓜式搭建asp.net mvc框架
责任编辑:彭凡 来源: cnblogs
相关推荐

2010-07-23 08:22:00

动态语言框架

2012-07-17 16:10:05

BPMWebsphereIBM

2020-12-08 06:05:19

生物识别COVID-19人工智能

2011-11-17 17:22:10

IT管理云计算

2011-11-18 10:00:05

云计算IT管理

2021-11-10 18:38:54

智慧城市

2012-01-18 09:53:13

Android碎片化

2012-06-14 09:15:14

2010-03-23 09:16:43

Python源码剖析

2009-12-18 14:49:15

Junos网络操作系统

2014-08-29 11:09:44

程序员

2009-07-22 13:55:23

2019-04-29 13:02:22

Intel手机基带苹果

2012-07-26 09:36:32

2012-08-22 15:42:07

NETGEAR秋季巡展

2015-07-28 10:18:52

Linux on Po极速Power

2009-02-19 09:48:34

XP微软降级

2011-09-23 09:28:50

vSphere 5vmware虚拟化

2010-04-21 11:44:10

桌面虚拟化Windows 7
点赞
收藏

51CTO技术栈公众号