2010-01-27 28 views
6

Làm thế nào để bạn sử dụng VALUE của một số mảng trái với số trong mảng mà nó dùng để xác định trường hợp? Trong mã của tôi:Cách sử dụng giá trị mảng cho trường hợp chuyển đổi (không phải số mảng)

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

Khi điều này chạy, nó sử dụng vị trí x [] trái với giá trị [x] để xác định trường hợp cần sử dụng. Ví dụ, khi x là 0, nhưng giá trị của vị trí [x] là 1, nó sử dụng trường hợp 0. Làm thế nào để tôi nhận được giá trị thay thế?

EDIT: Mã của tôi thực sự là vấn đề .... Vì một số lý do gỡ lỗi vào buổi sáng sớm có tác dụng tạo hình ảnh sai ...: P Là một FYI, đây là mã chính xác ...

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

Ở vị trí trên đầu tiên của vị trí [x], thay vào đó tôi chỉ đặt x. Cảm ơn vì sự giúp đỡ!

+1

mục đích của 'vị trí' sau đó là gì? – ata

+1

Mã của bạn có vẻ ổn, bạn có chắc đó là vấn đề không? –

+1

Tôi không thấy bất kỳ điều gì sai với mã này. Bạn có chắc chắn các giá trị ở vị trí [] giống như bạn mong đợi không? – Aaron

Trả lời

3

Hãy thử điều này:

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

Có lẽ một cái gì đó dễ dàng hơn sẽ nói:

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

Ngữ nghĩa của điều này giống hệt như những gì OP được đăng. – jason

+0

Nếu đây là vấn đề .... Nó sẽ làm việc, do đó được kiểm tra. – Bloodyaugust

Các vấn đề liên quan