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