0

以前にも非常によく似た質問をしましたが、今回はVB構文ではなく、最善のアプローチです。コンポーネントを渡すと、そのコンポーネントとそれに含まれるすべてのコンポーネントの色が変わるメソッドを作成しています。以下は私がこれまでに持っているコードですが、それはすべてのコンポーネントの色を変えるのではなく、ほんの一部です。私の主な問題は、ボタンが「3D」スタイルのままで「フラット」にならないことです。

    If TypeOf comp Is System.Windows.Forms.ButtonBase Then
        Dim c As System.Windows.Forms.ButtonBase
        c = comp
        c.FlatStyle = Windows.Forms.FlatStyle.Flat
        c.BackColor = getColor(style, PART_BOX)
        c.ForeColor = getColor(style, PART_TEXT)

        comp = c
    End If

渡されたコンポーネントはcompであり、メソッドはデータベースを調べて、メソッドに渡されたパラメーターにgetColor対応する色を返します。partこれは、すべての低レベルコンポーネントと、ラベルなどのすべての単純なコンポーネントで機能します。

これが起こることです。 ご覧のとおり、色はフェッチされ、すべてではありませんが、多くのコンポーネントに適切に適用されます。

ご覧のとおり、これは私の好ましい結果ではありません。スピナー、ボタン、メニューバーの色を変更する方法を知っている人はいますか?繰り返しますが、私はボタンが平らになる必要があります。

4

1 に答える 1

0

独自のメニューバーを描くことができます。参照: http: //msdn.microsoft.com/en-us/library/tdk48z0c (v = VS.100).aspx

ボタンには、BackColorプロパティとFlatStyleプロパティがあります。

http://msdn.microsoft.com/en-us/library/system.windows.forms.buttonbase.flatstyle.aspx

于 2011-04-27T19:50:39.677 に答える