C# 用户控件-从数据源的属性名称列表中选择属性值
我创建了一个名为C# 用户控件-从数据源的属性名称列表中选择属性值,c#,.net,winforms,user-controls,windows-forms-designer,C#,.net,Winforms,User Controls,Windows Forms Designer,我创建了一个名为DataSource的属性的UserControl。代码如下所示: public partial class MyUserControl : UserControl { public MyUserControl() { InitializeComponent(); } private object MyDataSource; [Browsable(true)] [System.ComponentModel.Bin
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
属性的值,如图所示:
现在我想要的是另一个名为
DataColumn
的属性,当DataSource
被设置为DataTable
时,用户可以在设计时从properties pan的下拉列表中为“DataColumn”选择该DataTable的一列属性值。显然,当数据源已更改时,DataColumn下拉列表中的值必须相应更改您可以使用以下属性装饰您的属性:
[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
负责显示包含要拾取的属性名称的下拉列表
当您从下拉列表中选择None
时,DataMemberFieldConverter
还负责将None
转换为空字符串
这就是
ListControl
属性的工作方式。您可以看看它。谢谢您的回答。这显示了我想要的属性。但是如何根据数据源用正确的值填充组合框?首先选择DataSource
属性的值,然后选择DataColumn
属性表单下拉列表的值就足够了。这就是ListControl
属性的工作方式。你可以看看它的颜色。