C#怎么通过for循环取出多个textBox控件里的值?

如题

如果你程序习惯好的话,就会给textbox的name属性赋值,这样就就可以获取指定的textbox了
foreach(Control item in this.Controls)
{
if(item is TextBox && item.Name.IndexOf("txtFind") == 0)
{
string currentText = ((TextBox)item).Text;//获取文本框的值
}
}追问

if (item is TextBox && item.Name.IndexOf("xxBox") == 0)

重命名成xxBox的几个textBox中的值都没有取出来

追答

如果你重新命名的是“xxBox”,xx是不一致的地方的话,就说明名字的规律是在最后的,这样的话indexof就不可以等于0了,我一般命名textbox是以txt开头的
box结尾也可以,item.Name.Substring(item.Name.Length-3)=="Box"

这样来判断

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-11-05
利用递归获取一个控件里的所有textbox:
List<TextBox> lstTextBox = new List<TextBox>();
private void GetText(Control con)
{
if (con is TextBox)
{
lstTextBox.Add((con as TextBox));
}
else
{
foreach (Control co in con.Controls)
{
GetText(co);
}
}
}本回答被网友采纳
第2个回答  2014-06-30
foreach(Control item in this.Controls)
{
if(item is TextBox)
{
string currentText = ((TextBox)item).Text;//获取文本框的值
}
}追问

你好,能不能只对部分textBox取值呢?比如将texBox改成xxBox后怎么改?

追答

先判断是否为TextBox,将符合条件的转换成TextBox控件后直接改变属性就可以了呀,像操作一般的文本框控件一样

追问

没看明白!我再加20分,能写出来吗?我的意思是把所有textBox里面重命名为xxBox的几个控件内容取出

追答

foreach(Control item in this.Controls)
{
if(item is TextBox)//如果是文本框
{
if(((TextBox)item).Name.Equals("xxBox"))//如果文本框的Name属性为xxBox为符合条件的数据
{
string currentText = ((TextBox)item).Text;//获取文本框的值
}
}
}

第3个回答  2014-06-30
foreach (Control item in this.Controls)
{
if (item is System.Windows.Forms.TextBox && item.Name.Substring(item.Name.Length - 3, 3).Equals("Box"))
{
string currentText = ((System.Windows.Forms.TextBox)item).Text;//获取文本框的值
}
}
相似回答