问题描述
我用button的单击事件在form1中添加了一组textbox,我想把textbox中再输入的值存入一个数组中,但由于textbox是局部变量不可行,怎样修改?添加textbox的代码如下privatevoidbutton1_Click(objectsender,EventArgse){for(intj=0;j<5;j++){TextBoxtxtb=newTextBox();txtb.Name="textb"+j.ToString();txtb.Width=30;txtb.Height=20;txtb.Top=100+30*j;txtb.Left=20;this.Controls.Add(txtb);}}
解决方案
解决方案二:
定义个Textbox数组字段,然后在for循环里给数组各元素赋值,然后操作数组里的元素就好了
解决方案三:
定义一个数组,然后将this.Controls中的各个TextBox的text值取出,不就行了?
解决方案四:
你要明白一点,即便是你动态添加的TextBox,也是存在始终存在From1上的,在整个From1的存在期间里,动态添加的TextBox始终是存在的,既然这样,那么在任何方法中可以通过下列方式取得foreach(Controlclinthis.Controls){if(clisTextBox){TextBoxtb=clasTextBox;stringtext=tb.Text;//存入数组}}
解决方案五:
引用3楼return_false的回复:
你要明白一点,即便是你动态添加的TextBox,也是存在始终存在From1上的,在整个From1的存在期间里,动态添加的TextBox始终是存在的,既然这样,那么在任何方法中可以通过下列方式取得C#codeforeach(Controlclinthis.Controls){if(clisTextBox)……
好思路,学习一个。剩下的考虑什么时候把text存到数组
解决方案六:
给新的textbox加eventhandler不就行了吗?
解决方案七:
#3的方法不错不过我觉得你本身这个位置是固定的也就是说一个窗口中其实只有这样5个那就就把定义拉到外面去并隐藏并且存入一个TextBox[5]数组中不作为局部变量不就好搞多了
解决方案八:
Control[]controls=form1.Controls.Find("textb",true);controls就是TextBox[]数组,要用的时候转换就可以
解决方案九:
可以FindControl
解决方案十:
三楼那个方法懂了,不过这里想把不同name的textbox.text存入不同的数组,就是我这里创建了两组textbox,想把其中的text存入两个数组中,怎么写代码?
解决方案十一:
foreach(Controlclinthis.Controls){if(clisTextBox){TextBoxtb=clasTextBox;stringtext=tb.Text;//存入数组switch(tb.Name){case"tb_name"://将text存入数组array_1break;case"tb_email"://将text存入数组array_2break;default:break;}}}