我會嘗試解釋我的問題。BindingSource到組合框和PropertyGrid的[Browsable(false)]屬性不起作用
我有一個類:
public class Person()
{
[Browsable(false)]
public Int32 Id { get; set; }
public string Name { get; set; }
//...
}
我用PropertyGrid
控件顯示Name
場,但我並不需要顯示Id
,所以我設置Browsable
屬性設置爲false這樣的:
[Browsable(false)]
public Int32 Id { get; set; }
在我的GUI中,我提供Person
類中的所有元素,在ListView
控件中,當選擇一個元素時,我在PropertyGrid
控件中顯示屬性,如下所示:
void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.propertyGrid.SelectedObject = (object)this.listView.SelectedObject;
}
一切正常,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";
和在線this.comboBox.ValueMember = "Id";
得到這個錯誤:
類型 'System.ArgumentException' 未處理的異常發生在System.Windows。 Forms.dll
附加信息:無法綁定到新的顯示成員。
如何解決此問題?
PS:如果我刪除[Browsable(false)]
線一切正常,但在PropertyGrid
控制Id
領域將顯示
這似乎是一個已知的問題:http://stackoverflow.com/questions/15442682/why-does-adding-a-browsablefalse-attribute-to-a-class-property-prevent-filte ..和... HTTP://stackoverflow.com/questions/4723207/custom-combob OX-控制自定義數據源與 - 定製displaymember-和valuemem – DonBoitnott