这看起来像一个简单的问题,但我完全陷入困境 - 这就是问题所在:
我有一个组合框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
是用户从下拉列表中选择的值。
两种情况都显示相同的结果
答案 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
包含您传递的任何字符串值。