抱歉打扰,但我有一个问题与C# Winforms,因为我一直在寻找同样的问题,我找到了一些解决方案,但他们不为我工作。好的,我有一个包含对象的Bindinglist
BindingList<objects.usuario> usuarios = new BindingList<objects.usuario>();
对象有一些公共字符串和int变量,我需要一个字符串和一个int变量。
public string dataNombreCompleto;
public int dataIdUsuario;
所以,一旦列表“usuarios”有了一些对象,我就这样做
cbAdministrativos.DisplayMember = "dataNombre";
cbAdministrativos.ValueMember = "dataIdUsuario";
cbAdministrativos.DataSource = usuarios;
问题是,它不起作用,组合框(cbAdministrativos)仍然显示对象。
当我通过调试器时,在断点之后,组合框设置了显示成员,valuemember和datasource,随着代码的进行,但是,在下一条指令(方法的结束)中,我意识到displaymember神奇地变成了“”而不是字符串“dataNombre”。
你知道吗?
先谢谢你了,抱歉英语不好。
感谢您的评分!在绝望中,我尝试了对象中的不同字段,我没有意识到我在问题中的示例代码中留下了“dataNombre”而不是“dataNombreCompleto”,无论如何这是正确的,这是我原始代码中的原始DisplayMember,但是,问题仍然存在:(**
7条答案
按热度按时间niwlg2el1#
它应该是:
此外,请考虑使用公共属性而不是公共字段。
Public Fields are evil
更改此:
对此:
68de4m5k2#
你需要在usuario类中使用getter和setter。
然后根据需要修改绑定代码。例如,看看给定的代码片段:
我希望这能解决你的问题。
iklwldmw3#
您需要设置displayMember的确切名称。试试这个
e4yzc0pl4#
您希望设置为
Display Member
和Value Member
的对象是什么?这两个是你的问题吗?然后将dataNombreCompleto设置为
Display Member
,将dataIdUsuario设置为Value Member
。显示成员和值成员的区别:
DisplayMember
属性,它旨在显示组合框中的字符串。ValueMember
隐藏在DisplayMember
后面。ValueMember
属性,它旨在获取与下拉列表中的选择对应的值。为了更好地理解
DisplayMember
和ValueMember
属性,您可以参考:llycmphe5#
在我的例子中,它是Sorted属性,在设计器中设置为
true
。根据文档,当数据绑定打开时,当this设置为true时会抛出异常,但如果在
Sorted
属性设置为true
之后设置DataSource
和XMember
属性,则显然不会抛出异常;它只是默默地不工作,你把你宝贵的头发,直到有没有离开。bvhaajcl6#
有类似的问题。尝试先分配数据源:
inb24sb27#
似乎在设置DataSource属性时,ComboBox会检查DisplayMember是否作为属性(/field?不知道,从未尝试过此处的字段),如果没有,则ComboBox清除DisplayMember属性。
如果ComboBox生成一个异常(提前失败)而不是隐藏失败,那会更好。