2013-08-26 76 views
1

我在運行時創建了一個ComboBox,我將DataSource設置爲通用列表。當我撥打combobBox.Items.IndexOf設置SelectedIndex屬性時,它總是返回-1。該值包含在DataSource中,所以它應該能夠找到索引。ComboBox.Items.IndexOf總是返回-1

這是我使用的代碼的一個例子。

Private Function InitDomainCombo(ByVal value as object, ByVal domainList As List(Of DomainNameValue)) As ComboBox 
    Dim cb As ComboBox 

    cb = New ComboBox 
    cb.DropDownStyle = ComboBoxStyle.DropDownList 
    cb.DataSource = domainList 
    cb.DisplayMember = "Name" 

    cb.SelectedIndex = cb.Items.IndexOf(CType(value, DomainNameValue)) 

    Return cb 
End Function 
+0

顯然,它不存在 –

+0

我已經做出與domainList.Contains(CTYPE(值,DomainNameValue))的檢查,以確保該值在域名列表 – Stephan

+0

你試過cb.Items.Contains(CType(value,DomainNameValue)) – Paparazzi

回答

1

我猜你嘗試選擇一個不存在的項目。

嘗試:

  • combobox添加到您的表格,您設置的selectedIndex之前。
  • 在設置selectedIndex之前強制使用combox.CreateControl()方法對控件進行初始化。

此線程相關的類似的問題:ComboBox items.count doesnt match datasource (C#)

+0

我將數據源更改爲直接將對象添加到組合框。無法使用combox.CreateControl(),因爲ComboBox是開始創建過程中的一部分usercontrol。 – Stephan