做了一个控件,将Label 和 ComboBox 组合在一起,其中 Label 用于显示标题,ComboBox 与后端数据表的字段相连,显示字段的内容。控件样式如下:
现在合在一起的新控件,有属性 "DataSource" / "DisplayMember" / "ValueMember",该属性与单个控件中的 ComboBox 中对应属性完全相同,希望新控件实例化后与原单独 ComboBox 一样,能有自动的窗体数据源感知和数据表字段感知功能。经过反复测试, DataSource 能感知窗体中的数据源,设定如下:
[Description("数据源"), Category("数据")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
get { return this.comboBox1.DataSource; }
set { comboBox1.DataSource = value; }
}
但 DisplayMember / ValueMember 用如下的程序,无法在 DataSource 确定的情况下,自动感知该数据源的字段!!:
[Description("显示的绑定字段"), Category("数据")]
public string DisplayMember
{
get { return this.comboBox1.DisplayMember; }
set { this.comboBox1.DisplayMember = value; }
}
[Description("值的绑定字段"), Category("数据")]
public string ValueMember
{
get { return this.comboBox1.ValueMember; }
set { this.comboBox1.ValueMember = value; }
}
目前错误的效果:
选定 DataSource 后,DisplayMember 没有任何变化,不会出现下拉框。
求助:这个应该如何设计????