ToolStrip与MenuStrip - 我可以使它们的渲染相同吗?

时间:2009-11-18 14:58:46

标签: .net vb.net toolstrip menustrip

我需要在我的应用程序中直接在menustrip下面显示工具条,但是为每个设置RenderMode = Professional不会给出相同的结果。它们都显示背景渐变,但不是同一个。

有没有办法将menustrip渲染用于工具条,反之亦然? 或者有人可以建议我自己如何最好地实现渐变,我可以在子类渲染器中执行?

稍后添加 非常感谢nobugz以下的回答。有用的材料也在 this answer 还有一个问题 - 如果我将自定义渲染器基于ToolStripProfessionalRenderer并覆盖OnRenderToolstripBackground,我仍然会在ToolStrip上获得弯曲的右角但不会在我的MenuStrip上。是否有一些内部逻辑提供了一个不同的区域来填充背景渲染器?我已经关闭(使用无操作功能覆盖)边框渲染器。

2 个答案:

答案 0 :(得分:1)

我没有看到,但可以想象这是一个问题。覆盖渲染器,使其对菜单项和工具条项使用相同的背景渲染器:

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

答案 1 :(得分:0)

您可以使用DockStyle.Top将两个面板停靠在彼此之上,然后为每个面板添加MenuStrip。我在我的应用程序上做了同样的事情,我在相当奇特的地方需要一些MenuStrips。如果你使用contiguos背景,它可以给出一个好的结果。