0

ToolStripProfessionalRenderer から継承する CustomRenderer を使用してツールストリップをレンダリングしています。コンセプトは、ツールストリップ項目の矢印の色を選択以外のすべての場合に白くしたいということです。選択されている場合、色は黒でなければなりません。以下の私のコードでは、矢印の色が常に同じままである ToolStripComboBox を除いて、すべての矢印がそれに応じてペイントされます。デフォルトのもの。それを整理する方法は?

クラス全体を書く必要はなく、関連するフラグメントだけを書く必要があることを願っています。なので、OnRenderArrow メソッドのみをアップロードしました。

Friend Class CustomRenderer
    Inherits ToolStripProfessionalRenderer

    Sub New()

    End Sub

    Protected Overrides Sub OnRenderArrow(ByVal e As System.Windows.Forms.ToolStripArrowRenderEventArgs)
        If e.Item.Pressed Then
            e.ArrowColor = Color.White
        ElseIf e.Item.Selected Then
            e.ArrowColor = SystemColors.ControlText
        Else
            e.ArrowColor = Color.White
        End If

        MyBase.OnRenderArrow(e)
    End Sub
End Class

関連するクラスを使用してツールストリップをレンダリングするには:

MyToolStrip.Renderer = New CustomRenderer
4

1 に答える 1

0

ToolStripComboBox は、ToolStripControlHost でホストされる通常のコンボ ボックスです。ToolStripItem の矢印は、前述のようにメニューの子インジケーターであり、それとは関係ありません。コードを利用して ComboBox をカスタム ペイントすることができます: ToolStripComboBox で右矢印をペイントする

于 2012-08-25T16:24:25.877 に答える