misc.log

日常茶飯事とお仕事と

Fontプロパティのオーバーライド

自作コントロール(継承ではなく、土台に貼り付けるタイプ)で、Fontプロパティをオーバーライドして内部のコントロールまで一括でフォント変更できるようにしたいと思ったのだが、なかなかうまくいかない。どうも、コンストラクタ付近でまだコントロールの初期化が終わっていない状態なのに、Fontプロパティにアクセスしてしまい、まだ実体化していないコントロールのFontプロパティまで変更しようとしてエラーがでているようだ。
というわけで、Fontの設定処理で、自作コントロール上の貼り付けコントロールの数を数え、0でなければ新しいフォントを適用するようにしたところ、うまくいった。

        Public Overrides Property Font() As System.Drawing.Font
            Get
                Return MyBase.Font
            End Get
            Set(ByVal Value As Font)
                MyBase.Font = Value

                If Me.Controls.Count <> 0 Then
                    btnSelect.Font = Value
                    btnExit.Font = Value
                    btnAny0.Font = Value
                    btnNextPage.Font = Value
                    btnDelete.Font = Value
                    btnUpdate.Font = Value
                    btnInsert.Font = Value
                    btnRefer.Font = Value
                    btnCsvFile.Font = Value
                    btnPrePage.Font = Value
                    GrpBoxButtonMst.Font = Value
                End If

            End Set
        End Property