Visual Basic や Visual C# などでフォームアプリケーションを作っているときの話。
ラベルのAutoSizeのデフォルトが False だったらいいなー と思ったことはないだろうか。 AutoSize = True
で作ります!ってとこもあるだろうけど、私の会社では AutoSize = False
。 しかし毎回ラベルを貼り付けるたびにプロパティを設定するのも面倒だ。そこで Label
の AutoSize
のデフォルト値(規定値)を False
にしたラベルを作ってしまおうというのが今回のコード。 Visual Studio 2010, Visual Basic で確認済み。
Visual Studio Professional Edition の場合は、継承したコントロールを作ることができる。 Express Edition では、継承したコントロールは最初からはできなかったような気がする。その場合は、継承したクラスをまず作る。
継承するのは System.Windows.Forms.Label
。 ここでありがちなのが、コントロールのデザイナ画面のプロパティウインドウで AutoSize
を False
にするやり方(デザイナ画面には何も表示されないが、プロパティウインドウは使える)。 Label の場合は厄介で、実際にフォームに貼り付けるときには AutoSize = True
に戻ってしまう。 そこで、コードの表示をして、次のコードを追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Private _Autosize As Boolean Public Sub New() _Autosize=False End Sub Public Overrides Property AutoSize() As Boolean Get Return MyBase.AutoSize End Get Set(ByVal Value As Boolean) If _Autosize <> Value And _Autosize = False Then MyBase.AutoSize = False _Autosize = Value Else MyBase.AutoSize = Value End If End Set End Property |