2008-09-04 5 views
3

사용자 지정 그리드 컨트롤에 선 색상 속성이 있습니다. Drawing.SystemColors.InactiveBorder으로 기본 설정하고 싶습니다. 나는 시도했다 :System.Drawing.SystemColors의 DefaultValue

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

그러나 그것은 작동하지 않는다. 기본 값 속성을 사용하여이를 어떻게 수행합니까?

답변

9

SystemColors에서 Color으로 첫 번째 인수를 변경해야합니다.
SystemColors 유형에는 유형 변환기가없고 Color 유형에만 유형 변환기가있는 것으로 보입니다.

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

"혼란 스러울 수있는 DefaultValueAttribute 클래스에 대한 MSDN 문서" 를 제목의 KB 문서를의의 DefaultValue 속성은 기본값을 설정하지 않습니다 값을 사용하면 양식 디자이너가 속성의 기본값이임을 알 수 있습니다. 속성을 기본값에서 변경하면 속성 창에 굵게 표시됩니다.

당신은 자동 속성을 사용하여 기본값을 설정할 수 없습니다 - 당신이에게 옛날 방식으로해야 할 것이다 : 하나는 설계시 속성 창에서 속성을 클릭 오른쪽으로 한 경우

class MyClass 
{ 
    Color lineColor = SystemColors.InactiveBorder; 

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

     set { 
      lineColor = value; 
     } 
    } 
} 
+2

을 시간을 표시하고 _Reset_ 명령을 선택하면 'bool'을 '색상'으로 변환 할 수 없다는 오류가 표시됩니다. @aku 솔루션이 작동합니다. – Pooven

+0

속성을 굵게 표시하는 것 외에도 Forms 디자이너는 'DefaultValueAttribute'에 지정된 값을 가진 경우 속성을 serialize하지 않습니다. 즉,이 속성의 경우 'InitializeComponent'메서드에서 코드가 생성되지 않습니다. –

관련 문제