1

アプリケーションでメニューストリップのすぐ下にツールストリップを表示する必要がありますが、それぞれに RenderMode = Professional を設定しても同じ結果が得られません。どちらも背景のグラデーションを示していますが、同じではありません。

ツールストリップにメニューストリップのレンダリングを使用する方法、またはその逆の方法はありますか? または、サブクラスのレンダラーで実行できるグラデーションを自分で実装する最善の方法を誰かがアドバイスできますか?

後で追加: nobugzの回答に 感謝します。役立つ資料もこの回答にあります。
もう 1 つ問題があります。カスタム レンダラーを ToolStripProfessionalRenderer に基づいて作成し、OnRenderToolstripBackground をオーバーライドすると、ToolStrip の右隅が湾曲しますが、MenuStrip は湾曲しません。バックグラウンド レンダラーで塗りつぶすための別の領域を提供する内部ロジックはありますか? ボーダー レンダラーをオフにしました (何もしない関数でオーバーライドしました)。

4

2 に答える 2

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
于 2009-11-18T22:18:57.453 に答える