2011-11-24 4 views
0

for 루프를 사용하여 목록 상자의 각 항목에 대해 하위 항목을 수행합니다. Whats weird는 for 루프가 전혀 반복하지 않았다는 것입니다. 첫 번째 항목을 반복하도록 강제해야했지만 그 항목에 대한 모든 하위 항목을 완료 한 후에는 방금 중지했습니다.C# : For 루프를 반복하지 않는 경우

목록 상자의 각 항목에 대해 반복되도록하려면 어떻게해야합니까?

Heres는 내 코드 :

listBox7.SelectedIndex = 0; 

for (int i = 0; i < listBox7.Items.Count; i++) 
{ 
    sub1(); 
    sub2(); 

    listBox1.Items.Add(listBox7.SelectedItem.ToString() + "\r"); 

    while (listBox7.SelectedItems.Count > 0) 
    { 
     listBox7.Items.Remove(listBox7.SelectedItems[0]); 
    } 

    webBrowser1.Navigate("http://www.google.com"); 
} 
+9

당신은 확신 'listBox7.Items.Count'가 0보다 큽니까? – DarthVader

+0

루프가 어떻게해야할까요? 그것은'i'만을 사용하지 않고'SelectedItem' 만 사용합니다 - 그것들은 매우 다릅니다. 'SelectedIndex' /'SelectedItem'을 사용하여'listBox7'를 반복하고 있습니까? 그러지 마. – Ryan

+2

또한 의미있는 이름을 갖도록 목록 상자의 이름을 변경하십시오. –

답변

4

당신은 가능성이 가장 높은 두 번째 패스에서에 반복 아무것도 남기지 않고, 문 동안 내부에있는 모든 항목을 제거합니다.

당신에 ListBox1 1 개 이상의 항목이 포함 된 경우

는, 예외는 항상 다음 줄에 던져되지 않습니다 : 더 이상 선택 항목이

listBox1.Items.Add(listBox7.SelectedItem.ToString() + "\r"); 

때문이다.

이 때문에 예외 처리는 테스트 중이 라해도 중요합니다. 당신의 목표는 listBox7의 모든 항목을 처리하는 경우

, 당신은 다음 행으로 이동하여이 작업을 수행 할 수 있습니다 : 선 위에, 루프 내부

listBox7.SelectedIndex = 0; 

sub1(); 
+0

listbox7에서 모든 항목을 선택한 경우에 해당됩니다. 그렇지 않으면 루프는 여전히 ofcourse를 실행하지만 아무것도 수행하지 않습니다. – Ajai

+0

@Ajai : 실제로; 그것이 내가 "가장 가능성이 높은"성명서를 수령 한 이유입니다. 그러나이 시나리오는 OP가 문제를보고 한 내용과 일치합니다. –

+0

Hhmmm yeah .. OP가이 질문에 대답해야합니다 ... – Ajai

관련 문제