2013-04-18 22 views
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是用户从下拉列表中选择的值。

它显示同样的结果两者的情况下

回答

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与您传递的任何字符串值进行强制比较。

+0

cmbConstriant.Items.IndexOf(m_link.ContraintLayerLinkType)被赋予值-1,即使项目名单m_link.ContraintLayerLinkType – Shrivallabh

+1

编辑答案.. – Arun

+0

我得到这个,但是当我们调用的IndexOf任何项目等方法内部调用? – Shrivallabh

相关问题