2013-07-23 76 views
1

我會嘗試解釋我的問題。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領域將顯示

+0

這似乎是一個已知的問題: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

回答

4

我重複的問題,我解決它通過設置數據源後設置將DisplayMember和ValueMember屬性:

comboBox1.DisplayMember = "Name"; 
comboBox1.ValueMember = "Id"; 
comboBox1.DataSource = new BindingSource(people, null); 
相關問題