2017-10-07 3 views
1

DataSource이라는 속성으로 UserControl을 만들었습니다. 이미지와 같이사용자 정의 - 데이터 소스의 속성 이름 목록에서 속성 값 선택

이제
public partial class MyUserControl : UserControl 
{ 
    public MyUserControl() 
    { 
     InitializeComponent(); 
    } 
    private object MyDataSource; 

    [Browsable(true)] 
    [System.ComponentModel.Bindable(true)] 
    [TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] 
    [Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] 
    public object DataSource 
    { 
     get 
     { 
      return MyDataSource; 
     } 
     set 
     { 
      if (MyDataSource != value) 
       MyDataSource = value; 
     } 
    } 
} 

내가 설계 시간의 드롭 다운 목록에서 DataSource 속성 값을 선택할 수 있습니다 :

DataSource property in properties pan

을 내가 정확히 또 다른입니다 원하는 이제 어떻게 코드는 다음과 같다 속성이 DataColumn 인 경우 DataSourceDataTable으로 설정된 경우 사용자는 디자인 타임에 특성 탭의 드롭 다운 목록에서 해당 DataTable의 열 중 하나를 "DataColumn"속성 값으로 선택할 수 있습니다. DataSource가 DataCol 다운 목록의 UMN 드롭 따라

답변

1

당신은 다음과 같은 속성으로 속성을 장식 할 수 변경해야합니다 : 위의 코드에서

[DefaultValue("")] 
[TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design")] 
[Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design", 
    typeof(System.Drawing.Design.UITypeEditor))] 
public string DataColumn{ get; set; } 

, DataMemberFieldEditor이 선택하는 속성 이름이 포함 된 드롭 다운을 표시 할 책임이있다.

DataMemberFieldConverterNone을 드롭 다운에서 선택하면 None을 빈 문자열로 변환합니다.

DisplayMember 속성이 ListControl 인 방식입니다. source code을 살펴볼 수 있습니다.

+0

답변 해 주셔서 감사합니다. 이 속성은 내가 원하는대로 표시됩니다. 하지만 어떻게 DataSource에 따라 올바른 값으로 콤보 상자를 채울 수 있습니까? – Moseyza

+0

먼저'DataSource' 속성 값을 선택하고 'DataColumn' 속성 양식 드롭 다운 값을 선택하면됩니다. –

+0

예! 그것은 올바르게 작동합니다 ... 감사합니다 – Moseyza