LabelコントロールのAutoSizeの初期値をFalseにする方法
LabelコントロールのAutoSizeプロパティは、何故かデフォルト値がFalseに設定されているにも関わらず、デザイナー画面で貼り付るとTrueに設定されてしまいます。
Labelを継承したコントロールで、コンストラクタでAutoSize=Falseにすれば簡単に出来るんじゃねとか思ってたのですが、どうも勝手にデザイナー画面がTrueに設定してしまうようです。AutoSizeをオーバーライドして色々やってみたりもしたのですが、やはりデザイナー画面で勝手にTrueにされてしまう現象は変わりませんでした。困ったものです。
最終的には、オーバーライドするのをやめて、独自にAutoSizeプロパティを定義し、InitLayoutで基底クラスのAutoSizeを上書きするという強引な方法で、何とか期待通りの動きになりました。
Private _AutoSize As Boolean = False <DefaultValue(GetType(Boolean), "False")> _ Public Overridable Shadows Property AutoSize As Boolean Get Return _AutoSize End Get Set(value As Boolean) _AutoSize = value MyBase.AutoSize = value End Set End Property Protected Overrides Sub InitLayout() MyBase.InitLayout() MyBase.AutoSize = _AutoSize End Sub