对于
.net2003
中提供的
winform
菜单,实在让人看起来有点
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
,不得已自己想办法对
MenuItem
进行扩展,微软倒是对此类的扩展提供了很好的方法,在
CodeProject
倒是找到了几个好的例子,
http://www.codeproject.com/cs/menu/MhOffice2003Menus.asp
http://www.codeproject.com/cs/menu/MenuExtender.asp
扩展无非是继承
MenuItem
或继承
IExtenderProvider
进行扩展,将
MenuItem
的
OwnerDraw
设为
True
,然后重写
OnDrawItem
和
OnMeasureItem
方法。
前一个是使用代码操作比较灵活,后一个则可以方便的进行可是化设计。
在这里我选择其中的
OfficeMenuItem
进行了重新封装,并进行了包装,使用
Xml
动态进行生成
程序界面看起来还是不错的
!
但接着问题来了,当是
MDI
应用时,当一个子窗体有菜单,而另一个没有菜单时,先打开有菜单的,后打开没有菜单,
MDI
主窗体菜单字体全没,跟踪是在主菜单
MergeMenu
没有触发
OnDrawItem
,刷新时也没有不触发
OnDrawItem,
,但没有使用
OfficeMenuItem
则正常,在网上找了不少的例子都出现如此的情况,难道是
Microsoft
的
bug?!!!
不敢断言!
,怎么去解决?
.net2005
的菜单控件多好,简直超过
.net2003
多多!!
各位同仁有没有解决的办法!赐教!
我想把例子文件上传,这里不能上传吗?
转载于:https://www.cnblogs.com/raininwind/archive/2004/10/20/54554.html