【问题标题】:ToolStrip vs MenuStrip - can I make their rendering identical?ToolStrip vs MenuStrip - 我可以让它们的渲染相同吗?
【发布时间】:2010-12-17 21:56:21
【问题描述】:

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

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

稍后添加: 非常感谢nobugz 他在下面的回答。有用的材料也在 this answer
还有一个问题——如果我将自定义渲染器基于 ToolStripProfessionalRenderer 并覆盖 OnRenderToolstripBackground,我的 ToolStrip 上仍然会出现弯曲的右角,但不会出现在 MenuStrip 上。是否有一些内部逻辑为后台渲染器填充提供不同的区域?我已关闭(被无操作函数覆盖)边框渲染器。

【问题讨论】:

    标签: .net vb.net toolstrip menustrip


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      您可以使用DockStyle.Top 将两个面板停靠在彼此的顶部,然后为每个面板添加一个MenuStrip。我在我的应用程序上做了同样的事情,我需要一些 MenuStrips 在相当异国情调的地方。如果您为它们使用连续背景,它可以产生良好的效果。

      【讨论】:

        猜你喜欢
        • 2018-04-22
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        相关资源
        最近更新 更多