2016-03-21 17 views
0

リストボックスで文字列を検索しようとしています。見つかった場合はメッセージボックスを表示し、そうでない場合は別のメッセージボックスを表示します。しかし、私は偽の部分でエラーを取得しています。助けてください。リストボックスから読み取るときにエラーが発生する

{  
    string myString = metroTextBox1.Text;//username 
    // Search starting from index -1: 
    int index = listBox1.FindString(myString, -1);//username 

    if (index != -1) 
    { 
     listBox1.SetSelected(index, true);//username 
     MessageBox.Show("ok"); 
    } 
    else 
    { 
     listBox1.SetSelected(index, false);//username 
     MessageBox.Show("error"); 
    } 

} 
+2

どのようなエラー....? – Gusman

+3

なぜ他の部分で-1に設定されている場合にインデックスにアクセスしようとしていますか? 'listBox1.SetSelected(index、false);' –

答えて

1

リストボックスで選択したアイテムを設定しようとしていますが、渡すインデックスは-1です。リストボックスでその文字列が見つからない場合は、項目をfalseに設定することはできません。使用可能なすべての項目をループして偽に設定するなど、何か他のことを行うこともできますが、探している文字列が見つからない場合は何が起こるかによって異なります。 TBHのelse節で何もしたくないかもしれません。

if (index != -1) 
{ 
    listBox1.SetSelected(index, true);//username 
    MessageBox.Show("ok"); 
} 
else 
{ 
    listBox1.SetSelected(index, false);//username // Index == -1 here. This will FAIL. 
    MessageBox.Show("error"); 
}