我会尝试解释它..所以我有一个for循环,每次我想加载与循环整数相等的文本框号。
这是我的代码:
for(int i=1 ; i<=indulok+1 ; i++)
{
StreamWriter sw = new StreamWriter("futamok/"+comboBox1.Text + "/" + indulok + ".txt");
sw.WriteLine(textBox1.Text);
sw.Dispose();
}
现在我想将textBox1.Text替换为这样的东西:
sw.WriteLine(textBox + i + .Text);
但这当然不起作用。
答案 0 :(得分:5)
这是一个可以通过名称找到控件的替代方法。
for (int i = 1; i <= indulok + 1; i++)
{
if (this.Controls.ContainsKey("textBox" + i.ToString()))
{
TextBox txtBox = this.Controls["textBox" + i.ToString()] as TextBox;
if (txtBox != null)
{
string FileName = "C:\\" + i.ToString() + ".txt";
System.IO.File.WriteAllText(FileName, txtBox.Text);
}
}
}
如果你的控件嵌套在其他控件(即GroupBox)中,你可能需要使用Find函数
for (int i = 1; i <= indulok + 1; i++)
{
Control[] controls = this.Controls.Find("textBox" + i.ToString(), true);
if (controls.Length > 0)
{
TextBox txtBox = controls[0] as TextBox;
if (txtBox != null)
{
string FileName = "C:\\" + i.ToString() + ".txt";
System.IO.File.WriteAllText(FileName, txtBox.Text);
}
}
}
答案 1 :(得分:3)
您可以将文本框放入某种索引集合中。最简单的是数组
所以,假设你有一些像
这样的数组textBox[] textBoxes
然后你可以打电话
sw.WriteLine(textBoxes[i].text);
答案 2 :(得分:0)
我猜你正在运行某种Windows Forms项目?如果是,您可以循环Controls-array来查找所有文本框:
foreach (Control c in this.Controls)
{
if (c.GetType() == textBox1.GetType())
sw.WriteLine(c.Text);
}