C# 组合框显示成员问题,让我发疯
很抱歉打扰您,但是我在C#Winforms上遇到了一个问题,因为我一直在搜索同一个问题,我找到了一些解决方案,但它们对我不起作用。好的,我有一个包含对象的绑定列表C# 组合框显示成员问题,让我发疯,c#,winforms,combobox,C#,Winforms,Combobox,很抱歉打扰您,但是我在C#Winforms上遇到了一个问题,因为我一直在搜索同一个问题,我找到了一些解决方案,但它们对我不起作用。好的,我有一个包含对象的绑定列表 BindingList<objects.usuario> usuarios = new BindingList<objects.usuario>(); 所以,一旦列表“usuarios”有了一些对象,我就会这样做 cbAdministrativos.DisplayMember = "d
BindingList<objects.usuario> usuarios = new BindingList<objects.usuario>();
所以,一旦列表“usuarios”有了一些对象,我就会这样做
cbAdministrativos.DisplayMember = "dataNombre";
cbAdministrativos.ValueMember = "dataIdUsuario";
cbAdministrativos.DataSource = usuarios;
问题是,它不工作了,组合框(CBAdministrativiOS)仍然显示对象
当我通过调试器时,在一个断点之后,组合框会按照代码的顺序设置display成员、valuemember和datasource,但是在下一条指令(方法的末尾)中,我意识到displaymember神奇地变成了“”而不是字符串“dataNombre”
有什么想法吗
提前谢谢,很抱歉英语不好
对不起,谢谢大家!在我绝望中,我尝试了对象中的不同字段,但我没有意识到我在问题中的示例代码中留下了“dataNombre”而不是“dataNombreCompleto”,无论如何,这是正确的,这是我原始代码中的原始DisplayMember,但问题仍然存在:(应该是:
cbAdministrativos.DisplayMember = "dataNombreCompleto";
也可以考虑使用公共属性而不是公共字段。
更改此项:public string dataNombreCompleto;
public int dataIdUsuario;
为此:
public string dataNombreCompleto { get; set; }
public int dataIdUsuario { get; set; }
您需要设置displayMember的确切名称。请尝试此操作
cbAdministrativos.DisplayMember = "dataNombreCompleto";
您希望设置为
显示成员
和值成员
的对象是什么?这两个对象是否来自您的问题
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
属性,您可以参考:
- 您需要在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;
我希望这能解决您的问题。在我的情况下,它是设计器中设置为true
的属性
根据文档,当数据绑定处于打开状态时,当设置为true时会引发异常,但如果在
排序的属性设置为true
后设置数据源
和XMember
属性,则显然不会引发异常;它只是默默地不起作用,直到没有剩余数据。也有类似问题。请先尝试分配数据源:
cbAdministrativos.DataSource = usuarios;
cbAdministrativos.DisplayMember = "dataNombre";
cbAdministrativos.ValueMember = "dataIdUsuario";
dataNombre属性在哪里?DisplayMember不应该是dataNombreCompletothanks吗?我没有意识到在示例代码中,我写了错误的值,但问题仍然存在:(这是我的问题-我让它工作,然后将公共属性更改为公共字段,它破坏了它。我不知道这是如此糟糕的做法。谢谢!谢谢,我没有意识到在示例代码中,我写了错误的值,但问题仍然存在:(谢谢,我没有意识到在示例代码中,我写了错误的值,但问题仍然存在:(
cbAdministrativos.DataSource = usuarios;
cbAdministrativos.DisplayMember = "dataNombre";
cbAdministrativos.ValueMember = "dataIdUsuario";