1

这看起来像一个简单的问题,但我完全被卡住了 - 这是问题所在:

我有一个组合框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是用户从下拉列表中选择的值。

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

4

1 回答 1

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 函数将您传递的项目(字符串)与组合框中的所有其他项目进行比较,但由于它们是 type MyConstraintObj,因此比较不正确,此函数将强制仅将变量ConstraintLayerLinkType与您传递的任何字符串值进行比较。

于 2013-04-18T12:30:52.633 回答