在组合框中显示特定值

时间:2013-04-18 12:22:17

标签: c# .net winforms combobox

这看起来像一个简单的问题,但我完全陷入困境 - 这就是问题所在:

我有一个组合框cmbConstriant

if (!string.IsNullOrEmpty(m_link.ConstraintLayerLinkType))
{
    BindingList<MyConstraintObj> allConstraints = GetAllConstraintLinks(m_project.NetworkLayers);
    cmbConstriant.DataSource = allConstraints;
    cmbConstriant.DisplayMember = "Value";
    cmbConstriant.SelectedText=m_link.ConstraintLayerLinkType;  
}
else
{
    BindingList<MyConstraintObj> allConstraints = GetAllConstraintLinks(m_project.NetworkLayers);
    cmbConstriant.DataSource = allConstraints;
    cmbConstriant.DisplayMember = "Value";
}

值正确绑定但m_link.ConstraintLayerLinkType为空时。

当它有一些字符串时,它应该显示值和其他值应该在下拉列表中。基本上m_link.ConstraintLayerLinkType是用户从下拉列表中选择的值。

两种情况都显示相同的结果

1 个答案:

答案 0 :(得分:1)

尝试

cmbConstriant.SelectedIndex = cmbConstriant.Items.IndexOf(m_link.ContraintLayerLinkType);

编辑:

我看到你正在将类MyConstraintObj的项目添加到组合中。在MyConstraintObj课程中添加此内容 -

public override bool Equals(object obj)
{
    String sCompareString = obj as String;
    if (sCompareString == null) return false;
    return ConstraintLayerLinkType == sCompareString;
}

IndexOf函数将您传递的项目(字符串)与组合框中的其他项目进行比较,但由于它们的类型为MyConstraintObj,因此它们正在比较错误,此函数将强制仅比较变量ConstraintLayerLinkType包含您传递的任何字符串值。