ComboBox问题:无法绑定到新值成员

我有一个我作为用户控件创建的combobox(它实际上由标签,combobox和文本框组成)。 我正在尝试将数据集绑定到combobox数据源,但我一直在ValueMember / Display成员上收到错误消息:

Cannot bind to the new display member - newdisplay member Cannot bind to the new value member - parameter name: value 

我以为我已经为usercontrol正确编码了所有内容:

  public partial class ucComboBox : UserControl { #region Properties (6) private bool isEditableReadOnly; private bool ArrVisible; private string _value; private string _name; public string value { get { return _value ; } set { _value = value; } } public string name { get { return _name; } set { _name = value; } } } 

我在usercontrol中有一些其他属性和事件,但它们不应该是问题。

我绑定信息的代码:

  ((ucComboBox)ctrl).combobox.DataSource = info; ((ucComboBox)ctrl).combobox.ValueMember = "radiology_id"; ((ucComboBox)ctrl).combobox.DisplayMember = "radiology_name"; 

只要它击中了值成员,它就会爆炸,我得到上面提到的两个错误。 我在用户控件中遗漏了什么吗? 在我看来这应该工作..(fyi – 信息数据源确实包含两列)

我尝试过一系列不同的策略并没有成功。 请帮忙!

谢谢

还要确保ID和Name属性为Public,否则会出现错误:
Cannot bind to the new display member.

绑定时我遇到了同样的问题。 我推翻了订单,一切都开始了。 原始代码将如下所示

  ((ucComboBox)ctrl).combobox.ValueMember = "radiology_id"; ((ucComboBox)ctrl).combobox.DisplayMember = "radiology_name"; ((ucComboBox)ctrl).combobox.DataSource = info; 

当然下面的代码片段会引起问题吗?

 public string value { get { return _value ; } set { _value = value; } } 

你需要将其他名称命名为comboValue。 “value”表示传递给属性声明的隐式变量。

 public string comboValue { get { return _value ; } set { _value = value; } } 

我认为你的组合属性修饰符Public不同。
但是,我将选择在usercontrol级别实现两个新的公共属性。
DisplayMemberValueMember只是为了避免那个丑陋的演员。
在set / get访问器中,我将反映内部组合中的值

 public string DisplayMember { get { return combobox1.DisplayMember; } set { combobox1.DisplayMember = value;} } public string ValueMember { get { return combobox1.ValueMember; } set { combobox1.ValueMember = value;} } 

远离使用Datatset。 创建了一个包含ID和Name值的类(“Facilities”)。 将“info”更改为List类型。 然后下面的代码工作得很好:

 info.Add(new Facilities { ID = dr["other_facility_id"].ToString(), Name = dr["other_facility_name"].ToString() }); ((ucComboBox)ctrl).combobox.DataSource = new BindingSource(info, null);//info; ((ucComboBox)ctrl).combobox.ValueMember = "ID"; ((ucComboBox)ctrl).combobox.DisplayMember = "Name"; 

绑定没有问题。

我遇到了同样的问题并找到了可能不适用于您的问题的解决方案,但可能对其他人有帮助:

标记为[Browsable(false)] -Attribute的属性在尝试绑定时也会导致此exception。