2017-10-07 2 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の列の1つを「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は選択するプロパティ名を含むドロップダウンを示す責任があります。

DataMemberFieldConverterは、Noneをドロップダウンから選択すると、Noneを空の文字列に変換します。

これは、DisplayMemberのプロパティListControlが動作する方法です。 source codeをご覧ください。

+0

ありがとうございます。これは、私が望むようなプロパティを示しています。データソースに応じてコンボボックスに正しい値を入力するにはどうすればよいですか? – Moseyza

+0

最初に 'DataSource'プロパティの値を選択し、' DataColumn'プロパティフォームのドロップダウンの値を選択するだけで十分です。 –

+0

はい!それは正しく動作します...ありがとう – Moseyza

関連する問題