2010-01-27 13 views
6

Jak używać WARTOŚCI numeru tablicy w przeciwieństwie do liczby w tablicy, która służy do określania wielkości liter? W moim kodu:Jak używać wartości tablic do przełączania wielkości liter (nie numeru tablicy)?

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

Kiedy ten jest uruchamiany, to korzysta z X w pozycji [] w przeciwieństwie do pozycji [X] 's wartość do określenia takim przypadku użyć. Na przykład, gdy x jest równe 0, ale pozycja [x] ma wartość 1, to korzysta z przypadku 0. Jak uzyskać wartość zamiast tego?

EDYCJA: Mój kod był rzeczywiście problem .... Z jakiegoś powodu debugowanie wcześnie rano ma efekt tworzenia fałszywych obrazów ...: P Jako FYI, tutaj był poprawny kod ...

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

W górnym pierwszym wystąpieniu pozycji [x] zamiast tego umieściłem tylko x. Dzięki za pomoc!

+1

co jest celem 'pozycji' wtedy? – ata

+1

Twój kod wygląda dobrze, jesteś pewien, że to problem? –

+1

Nie widzę niczego złego w tym kodzie. Czy jesteś pewien, że wartości w pozycji [] są takie, jakich oczekujesz? – Aaron

Odpowiedz

3

Spróbuj tego:

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

Może coś łatwiej byłoby powiedzieć:

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

Semantyka tego jest dokładnie taka sama jak to, co opublikował OP. – jason

+0

Gdyby to był problem .... To by działało, dlatego sprawdzone. – Bloodyaugust

Powiązane problemy