2013-04-16 70 views
2

我一直在創造不同的控件數組如下,e.g:創建可變大小的數組

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]; 

是否有創建它們,這樣我就不需要指定大小/長度的任何方式?即有可能使這些控件數組的大小可變嗎?

謝謝!

+3

'System.Collections.Generic.List ' - http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx –

回答

5

數組必須分配的長度,如果你想允許任意數量的元素 使用List類,像這樣

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

,並添加控件插入此集合

textBoxList.Add(new TextBox()); 
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(); 

或者只是使用列表...

2

List<>,如其他人所說,是個好主意,但它確實有一些開銷。你也可以做到這一點,如果你「使用」 System.Linq的,並假定controls變量指向控件的集合:

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

而且,如果你喜歡有列表,而不是數組,你可以這樣做也是如此:

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

最後,在您的字段和變量名稱中使用前綴如「Array_」通常被認爲是不好的樣式。