如何循环使用文本框控件?(C#WinForms)

如何循环使用文本框控件?(C#WinForms),c#,winforms,textbox,controls,C#,Winforms,Textbox,Controls,我有49个文本框,它们以类似表格的格式出现在表单上。每行文本框都属于不同的类别。我想知道如何在数组中循环遍历它们 我的意思是: txtName(0)。文本 txtOtherName(0)。文本 txtName(1).文本 txtOtherName(1).Text ((等等……) 其中(#)是文本框名称的唯一后缀 如果可能的话,我尽量避免给他们分配所有单独的变量(在每个组中)。我总共有7个变量和49个文本框 感谢您的帮助 谢谢您可以通过这种方式遍历每个控件 foreach (var control

我有49个文本框,它们以类似表格的格式出现在表单上。每行文本框都属于不同的类别。我想知道如何在数组中循环遍历它们

我的意思是:

txtName(0)。文本
txtOtherName(0)。文本
txtName(1).文本
txtOtherName(1).Text

((等等……) 其中(#)是文本框名称的唯一后缀

如果可能的话,我尽量避免给他们分配所有单独的变量(在每个组中)。我总共有7个变量和49个文本框

感谢您的帮助


谢谢

您可以通过这种方式遍历每个控件

foreach (var control in this.Controls)
{
    var textBox = control as TextBox;
    if (textBox != null)
    {
          // do your stuff here
    }
}

可以通过这种方式遍历每个控件

foreach (var control in this.Controls)
{
    var textBox = control as TextBox;
    if (textBox != null)
    {
          // do your stuff here
    }
}

这可能有帮助:
root
是容器或窗口,
id
是控件:

#region Find Control Recursive
public Control FindControlRecursive(Control root, string id)
{
    if (root.ID == id)
       return root;
    foreach (Control c in root.Controls)
    {
        Control t = FindControlRecursive(c, id);
        if (t != null)
           return t;
    }
    return null;
}
#endregion

这可能有帮助:
root
是容器或窗口,
id
是控件:

#region Find Control Recursive
public Control FindControlRecursive(Control root, string id)
{
    if (root.ID == id)
       return root;
    foreach (Control c in root.Controls)
    {
        Control t = FindControlRecursive(c, id);
        if (t != null)
           return t;
    }
    return null;
}
#endregion

你的计划中没有question@VahidK. (#)表示文本框名称中括号内的数字。括号和数字只是一个占位符,用来大致了解我在问题中的意思。我有49个文本框,它们以表格形式出现在表单上。看起来是糟糕的设计,产生了这样的问题。如果可能的话,请考虑使用<代码> DATGRIDVIEW < /代码>控件。case@Fabio这是学校的一个项目。文本框是必要的(遗憾的是)。我正在使用
DataGridView
将信息显示回用户。但是是的,尽管设计看起来很糟糕,文本框是必要的。我试着让它看起来尽可能的体面,实际上看起来也不太糟糕。哈在你的房间里没有question@VahidK. (#)表示文本框名称中括号内的数字。括号和数字只是一个占位符,用来大致了解我在问题中的意思。我有49个文本框,它们以表格形式出现在表单上。看起来是糟糕的设计,产生了这样的问题。如果可能的话,请考虑使用<代码> DATGRIDVIEW < /代码>控件。case@Fabio这是学校的一个项目。文本框是必要的(遗憾的是)。我正在使用
DataGridView
将信息显示回用户。但是是的,尽管设计看起来很糟糕,文本框是必要的。我试着让它看起来尽可能的体面,实际上看起来也不太糟糕。好主意,但有两个问题。首先,数组应该是控件()之一,而不是文本框。您还不知道它们都是文本框,稍后在使用
As
操作符循环时检查它们。第二,问题被标记为[c#],因此用该语言发布示例代码可能更合适。(并不是说VB.NET不容易翻译成C#,但这个人可能是个初学者,可能还不能这么做。)同意@CodyGray,我的错误。在假设控件为文本框之前,我已批准使用C#.if(控件为文本框)进行编辑one@Hemal所以,这个.Controls指的是表单上的所有文本框?Controls指的是包括文本框在内的所有控件。然后将单个控件转换为Textbox。如果它成功地被转换为文本框,那么它就不会为空,然后你就可以继续了。好主意,但有两个问题。首先,数组应该是控件()之一,而不是文本框。您还不知道它们都是文本框,稍后在使用
As
操作符循环时检查它们。第二,问题被标记为[c#],因此用该语言发布示例代码可能更合适。(并不是说VB.NET不容易翻译成C#,但这个人可能是个初学者,可能还不能这么做。)同意@CodyGray,我的错误。在假设控件为文本框之前,我已批准使用C#.if(控件为文本框)进行编辑one@Hemal所以,这个.Controls指的是表单上的所有文本框?Controls指的是包括文本框在内的所有控件。然后将单个控件转换为Textbox。如果它成功地铸造为文本框,那么它将不会为空,然后你可以继续。你为什么要这样做?!您的简单foreach循环完成了所有工作。那为什么递归调用的所有开销?!你为什么要这么做?!您的简单foreach循环完成了所有工作。那为什么递归调用的所有开销?!