看板 C_Sharp 關於我們 聯絡資訊
現在在做一個小題目是: 先建立一個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