2016-05-28 5 views
0

Ich versuche, zwei listBoxes für ein Programm, das ich codiere, zu durchlaufen. Beide ListBoxen haben eine unterschiedliche Anzahl von Items.C#: Wie durchläufe ich zwei listBoxes einzeln?

Grundsätzlich möchte ich, dass mein Programm das selectedItem aus einer listBox holt und die Zeichenfolge oder den Text dieses Elements verwendet, um den Text von JEDEM und JEDEM einzelnen Element in der anderen listBox zu ersetzen.

Sobald es fertig ist, das selectedItem aus dem ursprünglichen listBox für alle Elemente in der anderen listBox zu verwenden, möchte ich, dass es zum nächsten Element in der ursprünglichen listBox geht und den gleichen Vorgang noch einmal ausführt.

Es sollte dies wiederholen, bis es alle Elemente in der ursprünglichen ListBox durchlaufen hat.

Hoffentlich Sinn gemacht ....

Hier ist ein Beispiel Code, den ich gemacht. Ich habe zwei for-Schleifen erstellt, so dass sie beide listBoxes durchlaufen können.

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

Mein Problem ist, wenn die innere for-Schleife vollständig durchlaufen Iterieren es aus. Ich weiß, der Fehler liegt daran, dass es das Ende der listBox erreicht hat und nicht weiter gehen kann, aber ich weiß nicht, wie ich sonst durch die listBox iterieren soll, ohne die Elemente ausgewählt zu haben.

Wenn es das Ende von "listBoxNewListBox" erreicht, sollte es zum nächsten Element in "listBoxOriginal" gehen und den gleichen Prozess noch einmal ausführen, bis alle Elemente in "listBoxOriginal" durchlaufen sind. .

Jede Hilfe wäre willkommen!

Antwort

1

Ich denke, Problem ist wegen SelectedIndex auf der Liste. Ich denke, es geht einfach zu weit. Hier

ist eine kleine Änderung:

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

Hier Erklärung:

Wenn in der inneren Schleife Sie diese Operation tun: listBoxNewListBox.SelectedIndex++ Sie setzen diesen Index als 1 mehr als Index der Schleife. Das heißt, wenn wir die letzte Iteration der inneren Schleife betrachten, wird dieser Index mit einem Wert gesetzt, der bereits zu hoch ist. Dies ist wahrscheinlich der Grund, warum Anwendung eine Ausnahme auslöst.

Verwandte Themen