Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户控件-从数据源的属性名称列表中选择属性值_C#_.net_Winforms_User Controls_Windows Forms Designer - Fatal编程技术网

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
属性的工作方式。你可以看看它的颜色。