我有一個16個元素的int數組和16個文本框(textBox1,textBox2 ....),看起來像4x4矩陣。有沒有什麼辦法可以把文本框的值到每個數組元素,不使用這樣的代碼:來自文本框的數組值
array[1] = (int)textBox1.Text;
array[2] = (int)textBox2.Text;
我有一個16個元素的int數組和16個文本框(textBox1,textBox2 ....),看起來像4x4矩陣。有沒有什麼辦法可以把文本框的值到每個數組元素,不使用這樣的代碼:來自文本框的數組值
array[1] = (int)textBox1.Text;
array[2] = (int)textBox2.Text;
一種可能性是向TextBox
實例的引用存儲在數組中。
TextBox[] Boxes;
然後使用'for'循環來填充值。
for (int i = 0; i < 16; i++)
{
array[i] = (int)Boxes[i].Text;
}
恕我直言,最好的設計方式就是它的本意。特別是,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);
}
}
}
}
你可以使用一個函數使用它從形式的控制集「指數」來獲取文本框的文本爲整數:
int GetBoxText(int index)
{
return Convert.ToInt32(this.Controls["textBox" + i.ToString()].Text);
}
請注意,這沒有任何錯誤檢查。你可以添加一些,如果你想。所有這一切都是獲取名爲textBox +的控件的文本,無論我是從窗體的控件集合中獲取並將其轉換爲整數。
沒有比這更清潔的了。你可以使用'(this.FindControl(「textBox」+ i)作爲TextBox).Text',但是那麼你輸入類型安全 – dman2306
同意上面的內容。另一種可能是設置一個'TextBox'控件的數組,比如'Control [] aTextBoxes = new Control [] {textBox1,textBox2,..};',然後用'for(int i = 0 ; i
一個合適的控件命名或者在表單類中定義一個「TextBox []'」字段。此外,還有[鋸齒狀](https://msdn.microsoft.com/en-US/library/2s05feca.aspx)和[矩形/多維](https://msdn.microsoft.com/en-US /library/s7e8s029(v=VS.80).aspx)數組。 –