2

我一直在为不同的控件创建数组,如下所示:

private TextBox[] Array_TextBoxes;
private CheckBox[] Array_CheckBoxes;
private RadioButtonList[] Array_radioButton;

Array_TextBoxes= new TextBox[4];
Array_CheckBoxes= new CheckBox[5];
Array_radioButton= new RadioButtonList[10];

有什么方法可以创建它们以便我不需要指定大小/长度?即是否可以使这些控制数组的大小可变?

谢谢!

4

3 回答 3

5

数组必须指定一个长度,如果你想允许任意数量的元素使用List类,像这样

List<TextBox> textBoxList=new List<TextBox>();

并将控件添加到此集合中

 textBoxList.Add(new TextBox());
于 2013-04-16T23:18:25.777 回答
2

您可以将它们作为列表开始,然后转换为数组:

添加东西到这些使用.Add

List<TextBox> _TextBoxes = new List<TextBox>();
List<CheckBox> _CheckBoxes =  new List<CheckBox>();
List<RadioButtonList> _RadioButton = new List<RadioButtonList>();

然后转换为数组:

TextBox[] Array_TextBoxes = List<TextBox> _TextBoxes.ToArray();
CheckBox[] Array_CheckBoxes = List<CheckBox> _CheckBoxes.ToArray();
RadioButtonList[] Array_radioButton = List<RadioButtonList> _radioButton.ToArray();

或者只是使用列表...

于 2013-04-16T23:25:36.487 回答
2

List<>,正如其他人所建议的那样,是一个好主意,但它确实有一些开销。如果您“使用” System.Linq,您也可以这样做,并假设controls变量指向控件的集合:

Array_TextBoxes = controls.OfType<TextBox>().ToArray();

此外,如果您更喜欢使用列表而不是数组,您也可以这样做:

List<TextBox> textBoxes = controls.OfType<TextBox>().ToList();

最后,在字段和变量名称中使用“Array_”之类的前缀通常被认为是一种糟糕的风格。

于 2013-04-16T23:30:25.397 回答