我在C#编码组合框,由于某种原因,下拉菜单中的项目没有文字。当我选择了一个项目时,它会显示在组合框文本字段中(每当我单击下拉按钮时,下拉列表始终为空白)。数据源似乎绑定正确,因为在选择项目时返回正确的值,下拉列表的大小将根据数据源的项目数量而变化。一切看起来都很好,除了看起来我的下拉列表中有一堆空字符串,显然不是这样,因为一旦选择了一个项目,就会显示正确的文字。
这是相关代码:
if (list.Count > 0)
{
cboCustomers.DisplayMember = "Name";
cboCustomers.DataSource = list;
cboCustomers.ValueMember = "ID";
cboCustomers.SelectedIndex = 0;
}
我已经找到了答案,但无法在任何地方找到它......我确信这很简单,但我无法理解。我发现的最接近的问题是建议在数据源之前设置显示成员的答案,这显然不起作用。
列表是从数据库查询中填充的。这将在keyUp上运行,其想法是根据给定的信息填写列表。因此,如果我写'S',我会得到一个带有下拉列表的组合框,其中所有客户端都以'S'开头。
答案 0 :(得分:9)
鉴于绑定中没有任何异常,您可能会受到ComboBox的DrawMode
属性的影响,该属性可能设置为OwnerDrawFixed
或OwnerDrawVariable
。将其设置为Normal
,事情应该会好转。
答案 1 :(得分:2)
选择项目后,将显示正确的文本。
与背景颜色相同的前景色将产生您所看到的相同结果。