为什么函数IndexOf从ComboBox返回-1?

时间:2013-09-30 19:37:55

标签: c# wpf xaml combobox indexof

为什么函数IndexOf()从组合框中返回-1?当我调试时,组合框有7个项目。

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;
   }
}

2 个答案:

答案 0 :(得分:0)

我认为IndexOf()正在寻找string,而你的组合框有7个非字符串项。所以他找不到它的索引。尝试使用string类型的项填充yo组合,而不是在XAML中进行,如果是这样的话。

答案 1 :(得分:0)

-1是一个常见的返回值,表示没有找到任何内容。对于搜索返回其搜索内容索引的函数,-1表示该项不在列表中。

可能的原因是IndexOf期待一个对象。您要搜索的字符串可能是对象的属性,而不是对象本身,因此IndexOf将某个对象与字符串进行比较,但它们不匹配。

而不是SelectedIndex尝试SelectedValue。只要组合框的value属性包含您想要的字符串,.NET就会搜索组合框中的项目,以找到其值与给定参数匹配的项目。

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