Rom*_*omz 1 .net c# propertygrid combobox winforms
我会尝试解释我的问题.
我有一节课:
public class Person()
{
[Browsable(false)]
public Int32 Id { get; set; }
public string Name { get; set; }
//...
}
Run Code Online (Sandbox Code Playgroud)
我使用PropertyGridcontrol来显示Name字段,但我不需要显示Id,所以我将Browsable属性设置为false,如下所示:
[Browsable(false)]
public Int32 Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我的GUI中,我Person在ListView控件中呈现类的所有元素,并且当选择元素时,我在PropertyGrid控件中显示属性,如下所示:
void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.propertyGrid.SelectedObject = (object)this.listView.SelectedObject;
}
Run Code Online (Sandbox Code Playgroud)
一切正常,PropertyGrid只显示字段Name.
然后我需要使用这样的ComboBox控件:
List<Person> people = new List<Person>();
people.Add(...)
//.....
this.comboBox.DataSource = new BindingSource(people, null);
this.comboBox.ValueMember = "Id"; // here an exeption has been thrown !!!
this.comboBox.DisplayMember = "Name";
Run Code Online (Sandbox Code Playgroud)
并在线this.comboBox.ValueMember = "Id";获得此错误:
System.Windows.Forms.dll中发生了未处理的"System.ArgumentException"类型异常
附加信息:无法绑定到新的显示成员.
如何解决这个问题?
PS:如果我删除[Browsable(false)]行一切正常,但将显示控制Id字段PropertyGrid
我复制了这个问题,我在设置DisplayMember和ValueMember属性后通过设置DataSource解决了这个问题:
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
comboBox1.DataSource = new BindingSource(people, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5678 次 |
| 最近记录: |