2010-01-27 14 views
6

Come si utilizza il VALORE di un numero di matrice rispetto a quale numero nell'array si tratta per determinare il caso? Nel mio codice:Come utilizzare il valore di matrice per la commutazione di caso (non il numero di array)

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

Quando questo viene eseguito, utilizza l'x in posizione [] in contrapposizione alla posizione [x] 's valore per determinare qual caso da utilizzare. Ad esempio, quando x è 0, ma il valore di posizione [x] è 1, utilizza il caso 0. Come si ottiene invece il valore?

EDIT: Il mio codice era in effetti il ​​problema .... Per qualche motivo il debug di buon mattino ha l'effetto di creare false immagini ...: P Come una cronaca, qui era il codice corretto ...

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

Nella prima apparizione in alto della posizione [x], invece, avevo posizionato solo x. Grazie per tutto l'aiuto!

+1

qual è lo scopo di 'posizione' allora? – ata

+1

Il tuo codice sembra buono, sei sicuro che sia questo il problema? –

+1

Non vedo niente di sbagliato con questo codice. Sei sicuro che i valori in posizione [] siano come ti aspetti che siano? – Aaron

risposta

3

Prova questo:

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

Forse qualcosa di più facile sarebbe dire:

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

La semantica di questo è esattamente la stessa cosa che l'OP ha pubblicato. – jason

+0

Se questo fosse stato il problema ... avrebbe funzionato, quindi controllato. – Bloodyaugust

Problemi correlati