定数値やColor・FontなどをDefaultValue属性(Attribute)に設定する [C#]

.NETにはプロパティの既定値を設定するDefaultValueAttributeという属性が用意されています。
カスタムコントロールなどを作成する際に、プロパティの既定値をDefaultValue属性で指定することができます。

DefaultValue属性が指定されているプロパティは、Visual Studioのデザイナーのプロパティウィンドウ(プロパティグリッド)で変更の有無を確認することができます。(プロパティの値が変更されている場合は太字で表示されます。)

ReadOnlyプロパティの値を既定値のFalseからTrueに変更して太字で表示する
上記の例ではReadOnlyプロパティの値を既定値のFalseからTrueに変更しています。

また、DefaultValue属性を指定されているプロパティでは、コードジェネレーターがプロパティの値をマークアップ(InitializeComponent)に記述するかどうかを判断します。
コードジェネレーターは、既定値以外の値が指定されているプロパティのコードを生成してマークアップに記述します。

ReadOnlyプロパティの例であれば、Falseが指定されている場合はコードは生成されず、Trueが指定されている場合にのみ

コードが生成されて記述されます。

DefaultValueAttributeへ定数値を指定

数値、論理値、文字列値などの定数値は、DefaultValue属性にリテラルで指定することができます。

DefaultValueAttributeへクラス、構造体、列挙型を指定

プリミティブ型などの値は、DefaultValue属性に直接リテラルで指定できますが、System.Drawing名前空間のColor構造体やFontクラス、Size構造体などの値は、直接リテラルで指定することができません。

Color構造体やFontクラスなどのオブジェクトの既定値を設定する場合は、Type(型)と値を表す文字列をDefaultValue属性に指定します。
具体的には以下のように記述します。

DefaultValue属性の1つ目のパラメーターにtypeof演算子を使用してデータの型(Type)を指定します。2つ目のパラメーターにはデザイナーのプロパティグリッドに表示される文字列と同様の値を指定します。

パラメーターを2つ指定する形式のDefaultValue属性の指定は、int型、bool型などのプリミティブ型やstring型でも使用できます。

DefaultValue属性 補足

DefaultValue属性は既定値の設定を行うものですが、初期値を設定するものではありません。
ですので、DefaultValue属性を適用したプロパティが、実行時に既定値をデフォルト値としてプロパティの値が初期化されるわけではありません。
プロパティの初期値を設定する場合は、コンストラクタなどで値を設定して初期化してください。