2008-09-04 20 views
3

私はカスタムグリッドコントロールに線の色のプロパティを持っています。 Drawing.SystemColors.InactiveBorderにデフォルト設定します。私は試しました:System.Drawing.SystemColorsのDefaultValue

[DefaultValue(typeof(System.Drawing.SystemColors), "InactiveBorder")] 
public Color LineColor { get; set; } 

しかし、それは動作していないようです。どのように私はそれを既定値の属性で行うのですか?

答えて

4

これが役立つことがあります。http://support.microsoft.com/kb/311339を - 題しKBの記事は「DefaultValueAttributeクラスのMSDNドキュメントは、混乱を招くことがあり、」

9

SystemColorsからColorに最初の引数を変更する必要があります。
SystemColorsタイプのタイプコンバータはありません。タイプはColorのみです。

[DefaultValue(typeof(Color),"InactiveBorder")] 
2

のDefaultValue属性がデフォルトを設定しないマットが掲載リンクによると、値は、フォームデザイナーに、のプロパティがデフォルト値のであることを知らせるだけです。プロパティをデフォルト値から変更すると、プロパティウィンドウに太字で表示されます。

あなたは自動プロパティを使用してデフォルト値を設定することはできません - あなたはそれを昔ながらの方法でする必要があります。一つは、設計時にプロパティウィンドウで属性を右クリックする必要がありました場合は

class MyClass 
{ 
    Color lineColor = SystemColors.InactiveBorder; 

    [DefaultValue(true)] 
    public Color LineColor { 
     get { 
      return lineColor; 
     } 

     set { 
      lineColor = value; 
     } 
    } 
} 
+2

を_Reset_コマンドを選択すると、 'bool'が' Color'に変換できないことを示すエラーが表示されます。 @akuのソリューションが動作します。 – Pooven

+0

プロパティを太字で表示することに加えて、Formsデザイナーは、プロパティが「DefaultValueAttribute」で指定された値を持つ場合、このプロパティをシリアル化しません。つまり、このプロパティのInitializeComponentメソッドでコードが生成されません。 –

関連する問題