关于WinForm中Office样式的菜单

对于 .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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值