我在標題中加入了「Tricky」,因爲我知道它很難準確理解我想要的內容,但我會盡量清楚。Tricky:動態創建的控件數組導致問題
我有一個TextBox TextChange事件的文本框,它允許我創建用戶想要的texboxes的數量(我們將其稱爲tChange)。
以下是此事件的代碼的一部分:
int tester;
bool flag = false;
if (!Int32.TryParse(tChange.Text, out tester))
{
flag = false;
return;
}
else
{
num = Convert.ToInt16(tChange.Text);
flag = true;
}
if (flag == true)
{
if (num >= 1)
{
for (int i = 0; i < num; i++)
{
this.Size = new Size(590, 225 + 105 * i);
textBoxesQ[i] = new TextBox();
this.Controls.Add(textBoxesQ[i]);
textBoxesQ[i].Size = new Size(45, 20);
textBoxesQ[i].Location = new Point(25, 100 + 100 * i - 1);
}
}
}
所以用戶輸入值,一切都OK。如果他想更改tChange中的號碼,那也沒關係!表單是調整大小和文本框創建。 但是如果他這樣做(更改值tChange),一切都出錯!像
錯誤指數超出範圍
或者我不能從文本框等獲取值..
我開始以爲是TexBoxes在以前的前創建從這個傳來了錯誤,所以我試圖把新的向前,把舊的到前面,但沒有工作..
textBoxesQ[i].BringToFront();
textBoxesQ[i].SendToBack();
我也試圖DELET e創建新的舊版本之前,但我認爲我的代碼很古怪,根本不起作用。
textBoxesQ[i].Dispose();
編輯:作爲@Dr。 Stitch說,它可能來自於每當tChange中的文本被改變時不重新初始化文本框。現在我只需要弄清楚如何實現它。
更改爲(int i = 0;我
Claudius
我不認爲這是問題所在。我遇到了這個問題,例如,我將_tChange_中的值設置爲2,然後是3,前兩個TextBox將不起作用。 – UnderPaidIntern
問題在於textBoxesQ數組,您應該每次改變num值時重新初始化數組:TextBoxes [] textBoxesQ = new TextBoxes [num]。 :) –