动态和不可变控制数组的麻烦

时间:2011-04-03 14:52:43

标签: c# wpf controls

在WPF C#中,在代码背后,我必须动态创建一个Canvas数组(每个Canvas也是Children控件,如Label,TextBox,Button等。)

Canvas[] cv = new Canvas[myInt]; 
Label[] l = new Label[myInt];
TextBox[] tb = new TextBox[myInt];
...
Canvas.Children.Add(...);

可以动态添加或删除每个Canvas。问题是我必须给Canvas数组一个长度,如果其中一个Canvas被删除,索引仍将保留,后面的元素不能向上推。如果稍后我添加新的画布,新的Canvas可能会超出范围,除非我从头开始实例化一个非常大的数组。

有更好的解决方案吗? ArrayList,List还是其他什么?

1 个答案:

答案 0 :(得分:3)

这似乎很明显,但由于您事先并不知道要存储的元素数量应该使用List<Canvas>List<Label>等等,因此您可以使用方法list.Add()list.Remove()

不要使用ArrayList,您希望您的数据是强类型的,并且能够动态添加和删除项目 - 因此List<T>符合要求。