2013-04-18 24 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

相關問題