listBox内の検索

listBoxの要素に重複を許したくない場合は、入力時に存在確認を行うのが確実かと。そのために、その要素がすでに存在しているかどうかの確認を行うメソッドを使う。

string search_string = "例えば";
int index = listBox1.FindString(search_string);

この場合、「例えば」を含む文字列がlistBox1に存在していれば、含まれていた要素のインデックスを返すと。手に入れたインデックスを用いて処理が出来る。存在しなければ-1ないしListBox.NoMatchesが返される。

listBox2.Items.Add(listBox1.Items[index]);

今の自分は、ディレクトリパスをlistBoxに追加しているので、親ディレクトリを指定するという需要がある。また、同じディレクトリはlistBoxに追加したくない。そのため、相対ディレクトリだと表現がいくつでも見つかってしまうからlistBoxに追加する文字列は、ディレクトリパスの絶対ディレクトリである必要がある。
ここで問題が生じる。FindString()は「部分文字列の一致」なので
C:\bcc55\binを登録した後、親ディレクトリであるC:\bcc55があるかどうか尋ねると、FindString()は「存在している」と答える。親ディレクトリのアドレスは、子ディレクトリの部分アドレスでもあるので当然。これを避ける必要があって、FindString()の代わりにFindStringExact()を用いることになる。

int index = listBox1.FindStringExact("C:\bcc55");

この場合は、「C:\bcc55」に完全一致しないかぎりindexはlistBox1.NoMatchesを返す。