作者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
1F:→ CCWck:你第二次按的时候 没把前面的值清掉吧? 10/20 02:10
2F:→ sdwufei:嗯嗯,原本的程式没有清。是指清除掉动态产生的Textbbox? 10/20 02:23
3F:→ soup514:没有把textbox从controls remove掉 第二次产生时 10/20 11:03
4F:→ soup514:只是new新的textbox location也一样 放上去而己 10/20 11:04
5F:→ soup514:而计算sum是由array里的textbox算 不是画面上的 10/20 11:05
6F:→ soup514:所以那2个问题就是这样 可以使用panel放动态的textbox 10/20 11:06