2011-08-12 5 views
3

데이터 뷰 그리드에서 특정 값을 찾을 수있는 기본 루프를 실행하려고합니다. for 루프가 기본 조건을 평가하기 전에 종료되기 때문에 코드로 어떤 일이 일어나는지 알 수 없습니다.CLR이 내 forloop 변수를 멀리 떨어져 있습니다.

private void SearchDataViewGrid(string FileName) 
    { 
     //finds the selected entry in the DVG based on the image 
      for (int i = 0; i == dataPartsList.Rows.Count ; i++) 
      { 
       if(FileName == dataPartsList.Rows[i].Cells[3].Value.ToString()) 
       { 
       dataPartsList.Rows[i].Selected = true; 
       } 
      } 
     } 

이 프로그램은 충돌하지 않는,하지만 난 그것을 멀리 최적화되었음을 선언 내 '난'변수에 오류가 발생합니다. 온라인에서 찾은 몇 가지 간단한 수정을 시도했지만 아무것도 유지하지 않는 것 같습니다.

내가 통과 한 문자열이 올바른지 확인했으며, 내 '더미'DVG는 포함 된 행 수에 대해 14 값을 반환합니다. for 루프에서 'if'문을 제거하더라도 여전히 동일한 오류가 발생합니다.

+2

변경을로 변경해야합니다 (INT I = 0; 나는

+1

@Henk : 당신이 대답에 그 설정해야 ! –

답변

7

조건 cond로 조건부을 변경해야하는 것은 까지 조건 만 동안 상태가 아닙니다.

그래서 당신을위한`에

for (int i = 0; i < dataPartsList.Rows.Count ; i++) 
+0

bah ... 너무 오래 여기에왔다 .... 나는 마약 사용 사실에 대한 평가를하고 있었고, 그게 발사가 아니었다는 것이 놀랄 일이 아니었다. 도움 사람에겐 고맙다. 사실 ==로 바꿨다! 그것의 제대로 작동합니다. –

+2

일반적인 관행을 따르지 않고보다 유익한'<'를 사용하는 이유는 무엇입니까? –

2

조건은 i == dataPartsList.Rows.Count이므로이 두 값이 같을 때만 본문이 실행됩니다. 이렇게하면 루프가 실행되지 않을 것입니다. 당신은 for(init; cond; update)의 중간에 < 대신 ==

for (int i = 0; i < dataPartsList.Rows.Count ; i++) { 
    ... 
} 
+1

'<='? 그게 바로 위기 야. –

+0

그것은 제로를 기반으로합니다. 이것은 마지막 하나에서 충돌 할 것입니다 ... –

+0

@Ed, Davide, 4 시간의 수면 작업. Thansk 캐치! – JaredPar

관련 문제