作者sdwufei (玉鼎)
看板C_Sharp
標題[問題] 關於動態產生TextBox並加總數值
時間Sun Oct 20 01:57:52 2013
現在在做一個小題目是:
先建立一個textbox1輸入一個數字n,按下button1後會動態建立n個textbox,然後
再那n個textbox輸入數值,最後按下button2做加總計算顯示在textbox2
現在碰到一個問題,button1的工作竟是要動態建立textbox,程式碼如下:
txt_new = new TextBox[int.Parse(textBox1.Text)];
for (int i = 0; i < int.Parse(textBox1.Text); i++)
{
txt_new[i] = new TextBox();
txt_new[i].Location = new Point(30, 40 + 30 * i);
txt_new[i].Height = 20;
txt_new[i].Width = 80;
txt_new[i].Visible = true;
Controls.Add(txt_new[i]);
}
以上,第一次執行都沒有問題,但當我第二次按下button1時就會發生幾個問題
1.第一次產生五個textbox,第二次只產生兩個,畫面依然顯示五個textbox
2.第一次產生兩個,第二次產生四個,產生出來的四個textbox都有數字,但加總
只會計算到新的textbox,第一次就產生出來的textbox就不會被計算到。
可以指點一下這是什麼原因嘛?
另外我自己用了一個很笨的方式,先宣告初一個全域bool變數,用來判斷是否有
點選過button1產生textbox,有的話,就先用foreach把產生的txt_new陣列的
textbox全部都先Dispose(),然後再重新產生出來,雖然就可以克服我上面那兩
點問題,但總覺得好像不是這樣作法?是不是有比較標準的方式??
先謝謝各位的指教。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.239.120
→ CCWck:你第二次按的時候 沒把前面的值清掉吧? 10/20 02:10
→ sdwufei:嗯嗯,原本的程式沒有清。是指清除掉動態產生的Textbbox? 10/20 02:23
→ soup514:沒有把textbox從controls remove掉 第二次產生時 10/20 11:03
→ soup514:只是new新的textbox location也一樣 放上去而己 10/20 11:04
→ soup514:而計算sum是由array裡的textbox算 不是畫面上的 10/20 11:05
→ soup514:所以那2個問題就是這樣 可以使用panel放動態的textbox 10/20 11:06