2016-05-28 4 views
0

私はコーディングしているプログラムの2つのリストボックスを反復しようとしています。両方のlistBoxesの中には異なる項目数があります。C#:2つのリストボックスを個別に反復処理するにはどうすればよいですか?

基本的には、自分のプログラムがselectedItemを1つのlistBoxから取得し、その項目の文字列またはテキストを使用して、他のlistBoxの各項目と各項目のテキストを置き換えます。

元のリストボックスのselectedItemを他のリストボックス内のすべてのアイテムに対して使用し終えたら、元のリストボックス内の次のアイテムに移動して、同じプロセスをもう一度やり直します。

元のリストボックス内のすべての項目を通過するまでこれを繰り返す必要があります。

意味を成していた....

をここでうまくいけば、私が作ったいくつかのサンプルコードです。私は2つのforループを作成し、両方のlistBoxを反復できるようにしました。

for (int i = 0; i < listBoxOriginal.Items.Count; i++) 
{ 
    string linkurl = listBoxOriginal.Items[i].ToString() + ".."; 
    listBoxNewListBox.SelectedIndex = 0; 

    for (int o = 0; o < listBoxNewListBox.Items.Count; o++) 
    { 
     string s = listBoxNewListBox.Items[o] as string; 
     string newurl = s.Replace("DOMAIN", linkurl); 
     listBoxNewListBox.SelectedIndex++; 
    } 
} 

私の問題は、inner forループが完全に反復処理を完了したときです。私は、それがlistBoxの終わりに達し、それ以上は行くことができないためにエラーが発生していることを知っていますが、項目を選択せず​​にlistBoxを反復処理する方法がわかりません。

「listBoxNewListBox」の最後に到達すると、「listBoxOriginal」の次の項目に移動し、「listBoxOriginal」内のすべての項目を通過するまで同じ処理をもう一度実行する必要があります。 。

助けていただけたら幸いです!

答えて

1

問題はSelectedIndexのリストのためだと思います。私はそれがちょうど遠くに行くと思う。ここで

は少し変形例である:ここでは

for (int i = 0; i < listBoxOriginal.Items.Count; i++) 
{ 
    string linkurl = listBoxOriginal.Items[i].ToString() + ".."; 

    for (int o = 0; o < listBoxNewListBox.Items.Count; o++) 
    { 
     string s = listBoxNewListBox.Items[o] as string; 
     string newurl = s.Replace("DOMAIN", linkurl); 
     listBoxNewListBox.SelectedIndex = o; 
    } 
} 

は説明です:

内側のループでこの操作を行っているとき:listBoxNewListBox.SelectedIndex++あなたがループのインデックスより1多いものとして、この指標を設定しています。つまり、内側ループの最後の反復を見ると、このインデックスはすでに高い値に設定されています。これはおそらく、アプリケーションが例外をスローする理由です。

関連する問題