ToolStrip vs MenuStrip - можно ли сделать их рендеринг идентичным? - PullRequest
1 голос
/ 18 ноября 2009

Мне нужно отобразить панель инструментов прямо под строкой меню в моем приложении, но настройка RenderMode = Professional для каждого не дает идентичных результатов. Они оба показывают градиент фона, но не один и тот же.

Есть ли какой-нибудь способ использовать рендеринг Menustrip для Toolstrip, или наоборот? Или кто-то может посоветовать, как лучше реализовать градиент самостоятельно, чтобы я мог выполнить его в субклассовом рендере?

ДОБАВЛЕНО ПОЗЖЕ: Большое спасибо nobugz за ответ ниже. Полезный материал также есть в этом ответе .
Есть еще одна проблема - если я основываю свой пользовательский рендерер на ToolStripProfessionalRenderer и переопределяю OnRenderToolstripBackground, я все равно получаю изогнутые правые углы на моей ToolStrip, но не на моей MenuStrip. Есть ли какая-то внутренняя логика, которая обеспечивает другой регион для заполнения фоновым средством визуализации? Я отключил (переопределив функцию «ничего не делать») средство рендеринга границ.

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Я не вижу этого, но могу представить, что это проблема. Переопределите средство рендеринга, чтобы оно использовало один и тот же фоновый рендерер как для элементов меню, так и для элементов панели инструментов:

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 голосов
/ 30 июля 2013

Вы можете закрепить две панели, используя DockStyle.Top, друг над другом, а затем добавить MenuStrip к каждой из них. Я сделал то же самое в своем приложении, мне нужно было несколько MenuStrips в довольно экзотических местах. Это может дать хороший результат, если вы используете смежный фон для них.

...