很抱歉打扰,但是我遇到了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)仍然显示对象。
当我通过调试器时,在断点之后,组合框设置显示成员,值成员和数据源,如代码所示,但是,在下一条指令(方法结束)中,我意识到显然,成员会变成“”而不是字符串“dataNombre”。
有什么想法吗?
提前致谢,对不好的英语感到抱歉。
抱歉并感谢所有人!在我的绝望中,我尝试了对象中的不同字段,我没有意识到我为问题中的示例代码留下了“dataNombre”而不是“dataNombreCompleto”,无论如何这是正确的,这是我原始代码中的原始DisplayMember但是,问题仍然存在:(
答案 0 :(得分:5)
应该是:
cbAdministrativos.DisplayMember = "dataNombreCompleto";
另外,请考虑使用公共属性而不是公共字段。
改变这个:
public string dataNombreCompleto;
public int dataIdUsuario;
对此:
public string dataNombreCompleto { get; set; }
public int dataIdUsuario { get; set; }
答案 1 :(得分:2)
您需要设置displayMember的确切名称。试试这个
cbAdministrativos.DisplayMember = "dataNombreCompleto";
答案 2 :(得分:2)
您要将哪些对象设置为Display Member
和Value Member
?你的问题是这两个吗?
public string dataNombreCompleto;
public int dataIdUsuario;
然后,您可以将 dataNombreCompleto 设置为Display Member
,将 dataIdUsuario 设置为Value Member
。
cbAdministrativos.DisplayMember = "dataNombreCompleto";
cbAdministrativos.ValueMember = "dataIdUsuario";
cbAdministrativos.DataSource = usuarios;
DisplayMember
属性,它旨在显示字符串
组合框。 ValueMember
隐藏在DisplayMember
后面。ValueMember
属性,它旨在获取值
对应于下拉列表中的选择。为了更好地理解DisplayMember
和ValueMember
属性,您可以参考:
答案 3 :(得分:2)
你需要在usuario类中使用getter和setter。
string dataNombreCompleto;
int dataIdUsuario;
public string _DataNumComp
{
get
{
return dataNombreCompleto;
}
set
{
dataNombreCompleto = value;
}
}
public int _ID
{
get
{
return dataIdUsuario;
}
set
{
dataIdUsuario = value;
}
}
然后根据需要修改绑定代码。例如,查看给定的代码片段:
cbAdministrativos.ValueMember = "_ID";
cbAdministrativos.DisplayMember = "_DataNumComp";
cbAdministrativos.DataSource = usuarios;
我希望这能解决您的问题。
答案 4 :(得分:0)
就我而言,设计师将Sorted属性设置为true
。
根据文档,如果在数据绑定打开时将此异常设置为true,则会抛出异常但如果在{{1}之后设置DataSource
和XMember
属性,则显然不会抛出异常} property设置为Sorted
;它只是默默地不起作用,你把你的宝贵的头发拉出来,直到没有留下。
答案 5 :(得分:0)
有类似的问题。尝试先分配数据源:
cbAdministrativos.DataSource = usuarios;
cbAdministrativos.DisplayMember = "dataNombre";
cbAdministrativos.ValueMember = "dataIdUsuario";