用C#重画菜单,要求实现Visual studio2008菜单风格,个人觉得比较漂亮,既美观又大方,希望大家踊跃发言。

解决方案 »

  1.   

    唉!这是一个很好回答的问题。但是其实应该让很多人都清楚。像vs这样的(包括外包开发人员)上万人的团队,它怎么可能不自己开发控件呢?!难道它要使用mfc或者.net中的控件?
      

  2.   

    参考
    Improvement of the .NET Menu Style class
    http://www.codeproject.com/KB/menus/nicemenu.aspx
      

  3.   

    http://www.codeproject.com/KB/menus/MenuExtender.aspx
      

  4.   

    用Reflector之类反编译软件,查看下MenuScript、MenuItem控件的源码不就好了
      

  5.   

    继承ToolStripRender或其派生类,重写里面的绘制方法
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstriprenderer.aspx
    然后把菜单的Render属性设置为你的类的一个实例
      

  6.   

    使用 BCGControlBar For .NET 控件。包括 InstallShield、Nero、ACDSee(Acdsee现在换xTreme Toolkit了) 在内的很多商业软件都用它。虽然 BCG 不是免费的,但是它却提供源代码。不过你看了它的源代码就明白,UI这个东西要想做的完美绝非几行代码能搞定的。
      

  7.   

    Krypton这个控件,有开源的,你可以看看它的代码.它的所有功能基本上合winform自带的一样,就是重新绘制了控件界面.
      

  8.   

    VS2008那个菜单没什么特别的吧
    用professionalrender改下ColorTable估计就差不多了
      

  9.   

    不是跟你说了么。并非不存在这样的代码,但是你幻想的那种简单重画的实现根本没有实用价值,如果你在不同平台,不同皮肤下多测试测试就发现问题了。商业代码的源代码是非常复杂的。不要以为他们的复杂是“没有思路”,也不要以为花钱买商业控件的人都是傻瓜。另外可以明确告诉你的是,微软自己也买了BCGControlbar的代码,并且集成到MFC里面,随VS2010提供。