以前にも非常によく似た質問をしましたが、今回は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
これは、すべての低レベルコンポーネントと、ラベルなどのすべての単純なコンポーネントで機能します。
ご覧のとおり、これは私の好ましい結果ではありません。スピナー、ボタン、メニューバーの色を変更する方法を知っている人はいますか?繰り返しますが、私はボタンが平らになる必要があります。