2010-01-27 4 views
6

대소 문자를 판별하기 위해 배열의 어떤 숫자와 반대로 배열 번호의 VALUE를 사용합니까? 코드 내에서이 실행된다대소 문자 전환을 위해 배열 값을 사용하는 방법 (배열 번호 아님)

for (int x = 0; x < 3; x++) 
     { 
      switch (position[x]) 
      { 
       case 0: 
        label1.Text = people[x]; 
        break; 
       case 1: 
        label2.Text = people[x]; 
        break; 
       case 2: 
        label3.Text = people[x]; 
        break; 
      } 
     } 

, 그것은 [] 반대로 사용하는 경우에는 결정 [X]의 값을 각 위치에서의 X를 사용한다. 예를 들어, x가 0이지만 position [x]의 값이 1이면 대소 문자 0을 사용합니다. 어떻게 대신 값을 가져 옵니까?

편집 : 내 코드가 실제로 문제가되었습니다 .... 어떤 이유로 아침 일찍 디버깅하면 잘못된 이미지를 생성하는 효과가 있습니다. ... : P 참고로 올바른 코드가 있습니다 ...

for (int x = 0; x < 3; x++) 
     { 
      if (position[x] == 2) 
      { 
       position[x] = 0; 
      } 

      else 
      position[x]++; 

     } 

     for (int x = 0; x < 3; x++) 
     { 
      int val = position[x]; 
      switch (val) 
      { 
       case 0: 
        label1.Text = people[x]; 
        break; 
       case 1: 
        label2.Text = people[x]; 
        break; 
       case 2: 
        label3.Text = people[x]; 
        break; 
      } 

위치 [x]의 첫 번째 모습에서 대신 x 만 배치했습니다. 모든 도움에 감사드립니다!

+1

다음 '위치'의 목적은 무엇인가? – ata

+1

코드가 정상적으로 보입니다. 문제가 확실합니까? –

+1

이 코드에는 아무런 문제가 없습니다. 위치 []의 값이 예상 한 값입니까? – Aaron

답변

3

이 시도 :

for (int x = 0; x < 3; x++) 
    { 
     int val = position[x]; 
     switch (val) 
     { 
      case 0: 
       label1.Text = people[x]; 
       break; 
      case 1: 
       label2.Text = people[x]; 
       break; 
      case 2: 
       label3.Text = people[x]; 
       break; 
     } 
    } 

어쩌면 쉽게 뭔가 말을하는 것입니다 :

for(int x = 0; x < 3; x++) 
{ 
    Label label = MyForm.ActiveForm.Controls["label" + position[x]] as Label; 
    if (label != null) label.Text = people[x]; 
} 
+1

이것의 의미는 OP가 게시 한 것과 정확히 동일합니다. – jason

+0

이것이 문제가 되었다면 .... 따라서 효과가 있었을 것입니다. – Bloodyaugust