说我有10个文本框,我想将相同的文本放入其中。我不想写textBoxNum. Text = "hello!"
十倍,所以我可能会写这样的事:通过for循环迭代文本框
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
很显然,这是行不通的。
这怎么能用for
循环完成?
说我有10个文本框,我想将相同的文本放入其中。我不想写textBoxNum. Text = "hello!"
十倍,所以我可能会写这样的事:通过for循环迭代文本框
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
很显然,这是行不通的。
这怎么能用for
循环完成?
您或者需要将所有文本框加载到列表或数组结构中,并且这将允许您遍历它。
TextBox[] boxes = { tb1, tb2, tb3, ... };
否则,你可以检查你的表格/容器为TextBox
类型的项目Controls
财产。如果控件可以嵌套在更深的容器中,则可能需要递归地探索它们(在这一点上,我会认真考虑一种数组方法,除非你有一些可怕的文本框加载)。但作为一个出发点,你可能有
foreach (var tb in this.Controls.OfType<TextBox>())
{
tb.Text = "whatever";
}
你应该把你的文本框到一个数组:
TextBox[] boxes;
public MyForm() {
InitializeComponent();
boxes = { someTextBox, otherTextBox, ... };
}
像这样:
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = "Hello";
}
}
假设你要设置包含在控制\窗体上的所有文本框的文本,但也可以是针对更具体的场景进行了修改
您也可以编辑控件只匹配你想要的东西。这是一个例子。
foreach(Control ctrl in Controls)
{
if (ctrl.Name.StartsWith("TextBoxToEdit"))
{
ctrl.Text = "Hello!";
}
}
而且,没有必要投控制到文本框的控制已经拥有Text属性。
它可能有'Text'属性,但是你仍然想验证'if(ctrl是TextBox){}'。任何可以具有以“TextBoxToEdit”开头的名称。 –
你应该命名你的文本框。 – SLaks