簡體   English   中英

到ComboBox的BindingSource和到PropertyGrid的[Browsable(false)]屬性不能一起使用

[英]BindingSource to ComboBox and [Browsable(false)] property to PropertyGrid don't work together

我將嘗試解釋我的問題。

我有一堂課:

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中,我在ListView控件中顯示Person類的所有元素,並且當選擇一個元素時,我在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.Windows.Forms.dll中發生了類型為'System.ArgumentException'的未處理異常

附加信息:無法綁定到新的顯示成員。

如何解決這個問題?

PS:如果刪除[Browsable(false)]行,一切正常,但是PropertyGrid控件中的Id字段將顯示

我重復了該問題,並通過設置DisplayMember和ValueMember屬性設置DataSource來解決此問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM