[問題] 關於動態產生TextBox並加總數值

看板C_Sharp作者 (玉鼎)時間10年前 (2013/10/20 01:57), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
現在在做一個小題目是: 先建立一個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

10/20 02:10, , 1F
你第二次按的時候 沒把前面的值清掉吧?
10/20 02:10, 1F

10/20 02:23, , 2F
嗯嗯,原本的程式沒有清。是指清除掉動態產生的Textbbox?
10/20 02:23, 2F

10/20 11:03, , 3F
沒有把textbox從controls remove掉 第二次產生時
10/20 11:03, 3F

10/20 11:04, , 4F
只是new新的textbox location也一樣 放上去而己
10/20 11:04, 4F

10/20 11:05, , 5F
而計算sum是由array裡的textbox算 不是畫面上的
10/20 11:05, 5F

10/20 11:06, , 6F
所以那2個問題就是這樣 可以使用panel放動態的textbox
10/20 11:06, 6F
文章代碼(AID): #1IOiWYvZ (C_Sharp)