如何在C#.NET中创建控件数组?

如何在C#.NET中创建控件数组?,c#,arrays,collections,controls,C#,Arrays,Collections,Controls,我有一个表单,其中包含几个标准控件(文本框、按钮等)。我希望将集合中的某些控件分组,以便在任何给定时间启用和禁用它们,而无需显式设置每个控件。这样做的语法是什么?这里有一些伪代码来显示我想做什么 Control[] ControlCollection = new Control[]; ControlCollection.add(Button1); ControlCollection.add(TextBox1); ... ... foreach( Control x in ControlColle

我有一个表单,其中包含几个标准控件(文本框、按钮等)。我希望将集合中的某些控件分组,以便在任何给定时间启用和禁用它们,而无需显式设置每个控件。这样做的语法是什么?这里有一些伪代码来显示我想做什么

Control[] ControlCollection = new Control[];
ControlCollection.add(Button1);
ControlCollection.add(TextBox1);
...
...
foreach( Control x in ControlCollection)
{
    x.Enabled = false;
}

我知道我可以将控件放在一个分组框中并完成此操作,但控件在窗体上的位置不便于这样做。

您的示例应该很好

List<Control>
列表

也可以

您考虑过使用布局管理器吗?(就定位而言)
保留控件列表(不指定控件的位置)不会自动定位控件,布局管理器可能会有所帮助。

如果您尚未使用控件的tag属性,则可以在标记中放入某种形式的controlid,然后枚举控件集合以查找所需的特定id,并启用/禁用它们。

假设您使用的是webforms和.net 3.5,则可以使用类似的

var cntrls = new List<WebControl>()
        {
            {new TextBox(){ID = "Textbox1"}},
            {new Button(){ID="Button1", Text = "Click me!"}}
        };

cntrls.ForEach(x => x.Enabled = false);
var cntrls=新列表()
{
{new TextBox(){ID=“Textbox1”}},
{new Button(){ID=“Button1”,Text=“单击我!”}
};
cntrls.ForEach(x=>x.Enabled=false);

您是否确实尝试过实现类似于伪代码的东西?我认为这是可行的。你建议的不可行吗?我建议使用windows窗体或webforms(asp.net)?首先,如果不指定大小,我无法创建这样的数组。另外,如果我使用上面的示例,则没有与ControlCollection关联的add()方法。虽然列表很有用,但我的示例并没有像键入的那样有效,但是使用列表很有用。