2010-02-04 8 views
0

저는 BindingSource의 Subclass를 가지고 있는데,이 클래스는 우리의 특별한 필요에 따라 약간 확장되었습니다. VS2008 Designer에서 지원하고 싶습니다.Winforms Designer에서 형식과 컨트롤을 선택하도록 지원합니다.

나는 디자이너 지원을 받고 싶습니다. 그 중 두 개는 다른 Control으로 설정해야합니다. 하나는 Type으로 설정해야합니다.

기본값으로 null을 설정하는 것뿐만 아니라 디자이너를 표시하는 것은 매우 쉽습니다. 그러나 VS에서 availlable 컨트롤 (이상적으로 원하는 유형에만 해당) 및 Type을 선택하는 방법은 무엇입니까?

여기까지는 속성에 대한 코드가 있는데, VS-Designer 지원에 대해 아무것도 모르기 때문에 어떤 힌트라도 환영합니다.

public class BindingSourceEx 
    : BindingSource 
{ 
    [DisplayName("DataSourceType")] 
    [Description("Sets the type to bind to.")] 
    public Type DataSourceType 
    { 
     get; 
     set; 
    } 

    [DisplayName("BindingNavigator")] 
    [DefaultValue(null)] 
    [Description("Sets the BindingNavigatorQ1 to use.")] 
    public BindingNavigatorEx BindingNavigator 
    { 
     get; 
     set; 
    } 

    [DisplayName("DataGridView")] 
    [DefaultValue(null)] 
    [Description("Sets the DataGridViewQ1 to use.")] 
    public DataGridViewEx DataGridView 
    { 
     get; 
     set; 
    } 
} 

답변

1

디자이너의 기본 구현은 이미 BindingNavigator 및 DataGridView 속성을 처리합니다. 속성 표는 콤보 상자를 사용하여 컨트롤 유형과 일치하는 컨트롤을 선택할 수있게합니다. 콤보 박스에서 None이 아닌 다른 것을 얻으려면 양식에 BindingNavigatorQ1 컨트롤을 놓아야합니다.

Type 속성이 더 강하기 때문에 Type 값과 문자열 사이를 변환하려면 적어도 TypeConverter가 필요합니다. 이것이 반드시 디자인 할 수있는 속성이어야한다고 확신 할 수는 없습니다. 바인딩하려는 유형이 디자인 타임에 아직 존재하지 않고 모든 어셈블리가 컴파일 될 때 런타임에만 존재합니다.

+0

이와 같은 TypeConverter에 대한 샘플 코드를 제공해 주시겠습니까? –

+1

나는 치과 의사를 방문하는만큼 TypeConverters를 쓰고 싶다. 그것이 끝나면 그것은 재미있는 일입니다. 이 경우 특히 디자인 타임에 유형을 응원합니다. 그것은 잘 googles ... –

관련 문제