2013-09-30 35 views
1

爲什麼函數IndexOf()從組合框返回-1?當我調試時,組合框有7個項目。爲什麼函數IndexOf從ComboBox返回-1?

for (int i = 0; i < KontynentComboBox2.Items.Count; i++) 
{ 
    if((napis5.ItemArray.GetValue(0).ToString()) == ((((DataRowView)KontynentComboBox2.Items[i]).Row.ItemArray[0].ToString()))) 
    { 
     int inc = KontynentComboBox2.Items.IndexOf((((DataRowView)KontynentComboBox2.Items[i]).Row.ItemArray[0].ToString())); 
     KontynentComboBox2.SelectedIndex = inc; 
    } 
} 
+0

找不到您要找的物品。 –

+2

只需將所選索引設置爲'i',而不是嘗試查找當前項目的索引。你已經知道索引。 – Servy

+0

你的'for'循環中有足夠的投射嗎? :) – Brian

回答

0

-1是一個常見的返回值,意思是沒有發現任何東西。爲了搜索返回正在搜索的索引的函數,-1表示該項目不在列表中。

可能的原因是IndexOf期待一個對象。您正在搜索的字符串可能是對象的屬性,而不是對象本身,因此IndexOf將某個對象與字符串進行比較,並且它們不匹配。

而不是SelectedIndex嘗試SelectedValue。只要組合框的value屬性包含所需的字符串,.NET就會搜索組合框中的項目,以查找其值與給定參數相匹配的項目。

KontynentComboBox2.SelectedValue =(((DataRowView)KontynentComboBox2.Items[i]).Row.ItemArray[0].ToString()); 
0

我認爲IndexOf()正在尋找一個string,而你的ComboBox有7個非字符串項目。所以他無法找到它的索引。嘗試使用類型爲string的項目填充喲組合,而不是在XAML中使用它,如果是這種情況。