2009-11-18 104 views
1

我需要在我的應用程序中直接在menustrip下面顯示工具條,但是爲每個設置RenderMode = Professional都不會給出相同的結果。他們都顯示背景漸變,但不是同一個。ToolStrip vs MenuStrip - 我可以使他們的渲染相同嗎?

是否有某種方法可以爲工具條使用菜單欄渲染,反之亦然? 或者可以有人建議如何最好地實現一個漸變我自己,我可以執行一個分類的渲染器?

新增功能: 非常感謝nobugz的回答如下。有用的材料也在 this answer
還有一個問題 - 如果我將自定義渲染器基於ToolStripProfessionalRenderer並覆蓋OnRenderToolstripBackground,我仍然會在我的ToolStrip上獲得彎曲的右側拐角,但不會在我的MenuStrip上。是否有一些內部邏輯提供了一個不同的區域供後臺渲染器填充?我關閉了(用無所事事功能重寫)邊界渲染器。

回答

1

我沒有看到它,但可以想象它是一個問題。重載Renderer所以它使用相同的背景渲染兩個菜單項和工具條項目:

Public Class Form1 
    Public Sub New() 
     InitializeComponent() 
     MenuStrip1.Renderer = New MyRenderer() 
    End Sub 

    Private Class MyRenderer 
     Inherits ToolStripProfessionalRenderer 
     Protected Overrides Sub OnRenderItemBackground(ByVal e As ToolStripItemRenderEventArgs) 
      MyBase.OnRenderMenuItemBackground(e) 
     End Sub 
    End Class 
End Class 
0

可以停靠使用DockStyle.Top兩個小組,在彼此的頂部,然後添加一個MenuStrip他們每個人。我在我的應用程序上做了同樣的事情,我需要幾個MenuStrips在相當異常的地方。如果你爲他們使用contiguos背景,它可以給出好的結果。

相關問題