2013-10-08 81 views
1

我有一個有六個數字的數組。我想對這些數字中的每一個執行一定的等式,然後將結果放在一系列文本框中,與數組中的位置對應。例如,在陣列POS 0的值方程的結果進入textbox01,POS1成textbox02的結果等c#從數組中填充多個單元格

我有以下代碼:

for (int i = 0; i <= 5; i++) 
     { 
      if ((Convert.ToInt32(statArray.GetValue(i))-10)%2 == 0) 
      { 
       //txtMod01.Text = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 10)/2); 
      } 
      else 
      { 
       txtMod01.Text = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 11)/2); 
      } 
     } 

我想自動改變的名稱將文本框(例如txtMod01)添加到系列中的以下文本框(txtMod02)中。

他們有什麼辦法做到這一點?

回答

1

你可以把你的Textboxs一個數組爲好,這樣的:

TextBox[] boxes = new TextBox[]{txtbox01, txtbox02, txtbox03, txtbox04, txtbox05, txtbox06}; 
    int[] values = new int[]{val1, val2,val3, val4,val5, val6}; 
    for(int i=0; i < values.Count; ++i) 
    { 
     //perform calculations 

     ... 

     boxes[i].Text = values[i]; 
    } 
+0

出於某種原因,[陣列] .Count對我不起作用,但由於我確切知道我有多少個文本框,因此使用簡單的整數來定義它更容易。 這正是我所需要的,謝謝! – Dekwa

2

您可以使用反射,它允許你在運行時操作類型:

// property name "txtMod0x" 
string propertyName = "txtMod" + i.ToString().PadLeft(2, '0'); 

// get the property from the current type 
PropertyInfo prop = this.GetType().GetProperty(propertyName); 

if (prop != null) 
{ 
    // get the property value (the TextBox in this case) 
    var textBox = (TextBox)prop.GetValue(this, null); 

    string val = Convert.ToString((Convert.ToInt32(statArray.GetValue(i)) - 11)/2); 
    textBox.Text = val; 
} 
相關問題