假设我有10个文本框,我想将相同的文本放入每个文本框中。我不想写textBoxNum. Text = "hello!"
十次,所以我可能会这样写:
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
显然,它不起作用。
如何使用for
循环完成此操作?
答案 0 :(得分:6)
您需要将所有文本框加载到列表或数组结构中,这样您就可以迭代它。
TextBox[] boxes = { tb1, tb2, tb3, ... };
否则,您可以检查表单/容器的Controls
属性以查找TextBox
类型的项目。如果控件可以嵌套在更深的容器中,您可能需要以递归方式探索它们(此时,我会认真考虑一种数组方法,除非您要加载一些可怕的文本框)。但作为一个起点,你可能有
foreach (var tb in this.Controls.OfType<TextBox>())
{
tb.Text = "whatever";
}
答案 1 :(得分:3)
您应该将文本框放入数组中:
TextBox[] boxes;
public MyForm() {
InitializeComponent();
boxes = { someTextBox, otherTextBox, ... };
}
答案 2 :(得分:1)
像这样:
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = "Hello";
}
}
假设您要设置控件\表单中包含的所有文本框的文本,但可以针对更具体的场景进行修改
答案 3 :(得分:0)
您还可以编辑仅匹配所需内容的控件。这是一个例子。
foreach(Control ctrl in Controls)
{
if (ctrl.Name.StartsWith("TextBoxToEdit"))
{
ctrl.Text = "Hello!";
}
}
此外,无需将控件转换为TextBox,因为Control已具有Text属性。