自作コントロール(継承ではなく、土台に貼り付けるタイプ)で、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