2015-09-07 77 views
3

我有一個16個元素的int數組和16個文本框(textBox1,textBox2 ....),看起來像4x4矩陣。有沒有什麼辦法可以把文本框的值到每個數組元素,不使用這樣的代碼:來自文本框的數組值

array[1] = (int)textBox1.Text; 
array[2] = (int)textBox2.Text; 
+0

沒有比這更清潔的了。你可以使用'(this.FindControl(「textBox」+ i)作爲TextBox).Text',但是那麼你輸入類型安全 – dman2306

+0

同意上面的內容。另一種可能是設置一個'TextBox'控件的數組,比如'Control [] aTextBoxes = new Control [] {textBox1,textBox2,..};',然後用'for(int i = 0 ; i

+0

一個合適的控件命名或者在表單類中定義一個「TextBox []'」字段。此外,還有[鋸齒狀](https://msdn.microsoft.com/en-US/library/2s05feca.aspx)和[矩形/多維](https://msdn.microsoft.com/en-US /library/s7e8s029(v=VS.80).aspx)數組。 –

回答

2

一種可能性是向TextBox實例的引用存儲在數組中。

TextBox[] Boxes; 

然後使用'for'循環來填充值。

for (int i = 0; i < 16; i++) 
{ 
    array[i] = (int)Boxes[i].Text; 
} 
0

恕我直言,最好的設計方式就是它的本意。特別是,rectangular/multidimensional arrays可能在這種情況下是有用的:

public partial class Form1 : Form { 
    TextBox[,] textBoxes; 
    int[,] values; 

    public Form1() { 
     InitializeComponent(); 
     textBoxes = new TextBox[4, 4]; 
     values = new int[textBoxes.GetLength(0), textBoxes.GetLength(1)]; 
     for(int r = 0; r < textBoxes.GetLength(0); r++) { 
      for(int c = 0; c < textBoxes.GetLength(1); c++) { 
       values[r, c] = int.Parse(textBoxes[r, c].Text); 
      } 
     } 
    } 
} 
1

你可以使用一個函數使用它從形式的控制集「指數」來獲取文本框的文本爲整數:

int GetBoxText(int index) 
{ 
    return Convert.ToInt32(this.Controls["textBox" + i.ToString()].Text); 
} 

請注意,這沒有任何錯誤檢查。你可以添加一些,如果你想。所有這一切都是獲取名爲textBox +的控件的文本,無論我是從窗體的控件集合中獲取並將其轉換爲整數。