有没有办法在Winforms中拥有(或类似的)MainMenu?

时间:2012-06-15 22:22:10

标签: c# winforms menubar aero dwm

我正在尝试为我的应用程序创建一个类似于Mozilla Firefox使用的MainMenu:

因此它显示在航空玻璃上。我可以想到一些方法来做到这一点,除非它们很难看,并且由于它们是黑客的,可能会破坏程序的体验。

我想知道是否有办法自定义绘制MainMenu控件,类似于如何在其他控件上覆盖OnPaint方法(由于某种原因,MainMenu没有)。或者,如果这是不可能的,我可以使用什么样的hacky方式,这不会破坏用户体验。

是的,我确信在WPF中有一个非常简单的方法可以做到这一点,我希望能够花时间学习它,但我的应用程序已经处于半成熟阶段,它此时切换到不同的UI平台会非常不方便。

1 个答案:

答案 0 :(得分:1)

我最终创建了自己的控件,它继承了ToolStripMenuItem并覆盖OnPaint并使用DrawThemeTextEx绘制文本,并使用找到here的MenuStrip渲染器的修改版本省略了标题文本的呈现(所以它不会与DrawThemeTextEx和ToolStrip的背景栏冲突。

最终产品如下所示:

:)