我需要在我的应用程序中直接在menustrip下面显示工具条,但是为每个设置RenderMode = Professional不会给出相同的结果。它们都显示背景渐变,但不是同一个。
有没有办法将menustrip渲染用于工具条,反之亦然? 或者有人可以建议我自己如何最好地实现渐变,我可以在子类渲染器中执行?
稍后添加 非常感谢nobugz以下的回答。有用的材料也在 this answer 还有一个问题 - 如果我将自定义渲染器基于ToolStripProfessionalRenderer并覆盖OnRenderToolstripBackground,我仍然会在ToolStrip上获得弯曲的右角但不会在我的MenuStrip上。是否有一些内部逻辑提供了一个不同的区域来填充背景渲染器?我已经关闭(使用无操作功能覆盖)边框渲染器。
答案 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背景,它可以给出一个好的结果。