在开发动态菜单时,使用了DevExpress的xtraBar3程序集。随后参考了http://news.50004.com/info/12194.html关于创建动态菜单的方法。在实际开发过程中,问题还真不少。。
因为使用http://news.50004.com/info/12194.html的方法构建菜单时,使用了多个二维数组来保存菜单的名称、事件、调用dll的方法、快捷键(我加的),所以直接导致菜单列表主次关系不明确,只能通过itemID来进行定位(啊,恶梦开始了)。由于使用的是GetNewItemId()来进行itemid的分配,使得itemid与xml文件中的对应关系是错误的。晕……。当然,事件肯定也就指向错误喽。。
进行调整,为了让其主次关系更加明显,便于查错,更改xml结构为datatable构架,嘿嘿……把他用datatable.readxml()方法读到datatable中岂不是更好,代码量还少不说,定位啊、维护啊什么的少了不少事。加载个datagrid没事还能looklook。hoho~~~`
这个问题解决了,终于看见窗口蹦出来了,上面摆着一个bar,可就是没有item?晕掉……咋就不对劲呢?咋就不对劲呢?查完所有代码,没发现有错误,属性统统正确。郁闷……。
突然看到机子内存剩了不到40M了,是不是因为窗口没有刷新造成的?试※……
在增加菜单的方法后面加入方法this.Refresh();正常了……哇哈哈。。。奇怪的问题!
做到这里突然又意识到一个问题:MyForms 类是个扩容起来非常麻烦的类!里面打开窗口的方法都是写死的,这意味着如果增加一个窗口就要对这个文件进行改写……爷爷的。。
改吧。。最后在xml中增加了对于窗口类的定义,hoho~~~只要放入dll,在维护一下xml就可以使用这个新增窗口的功能了。嘿嘿……。
又有问题。。类都保露在xml中,可不是什么好事情。。再写方法加密下※嘿嘿……
??又发现问题。。缺少对于菜单权限的管理。。。我改……。
??xml文件维护起来真麻烦。。加入xml维护功能。。
在写了几个dll后,挺有成就感,得意的笑一下。。又突然想起个问题。。没有建立窗口之间数据传递的方法。。巨汗……。。。。
改个软件咋就这么费劲呢……郁闷啊。。。