首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BindingSource to ComboBox和PropertyGrid的[Browsable(false)]属性不一起工作

BindingSource to ComboBox和PropertyGrid的[Browsable(false)]属性不一起工作
EN

Stack Overflow用户
提问于 2013-07-23 17:11:33
回答 1查看 6K关注 0票数 1

我会尽力解释我的问题。

我有一堂课:

代码语言:javascript
复制
public class Person()
{
        [Browsable(false)]
        public Int32 Id { get; set; }

        public string Name { get; set; }

        //...
}

我使用PropertyGrid控件显示Name字段,但不需要显示Id,因此我将Browsable属性设置为false,如下所示:

代码语言:javascript
复制
[Browsable(false)]
public Int32 Id { get; set; }

在我的图形用户界面中,我在Person控件中显示了ListView类的所有元素,当选择一个元素时,我在PropertyGrid控件中显示属性如下:

代码语言:javascript
复制
void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   this.propertyGrid.SelectedObject = (object)this.listView.SelectedObject;
}

一切正常,PropertyGrid只显示字段Name

然后,我需要像这样使用ComboBox控件:

代码语言:javascript
复制
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字段将显示出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 18:45:58

我重复了这个问题,并在设置了DataSource和ValueMember属性之后,通过设置DisplayMember和ValueMember属性来解决这个问题:

代码语言:javascript
复制
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
comboBox1.DataSource = new BindingSource(people, null);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17816708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档