C# 动态和不可变控件数组的问题

C# 动态和不可变控件数组的问题,c#,wpf,controls,C#,Wpf,Controls,在WPF C#中,在代码隐藏中,我必须动态创建一个画布数组(每个画布还包括标签、文本框、按钮等子控件) 可以动态添加或删除每个画布。问题是我必须给Canvas数组一个长度,如果其中一个Canvas被删除,索引仍然会保留,并且后面的元素不能向上推。如果以后我添加新画布,新画布可能会超出范围,除非我从一开始就实例化一个非常大的数组 有更好的解决办法吗?是ArrayList,还是List或其他什么?这似乎很明显,但由于您事先不知道要存储多少元素,因此应该使用列表,列表等。然后您可以使用方法列表.添加(

在WPF C#中,在代码隐藏中,我必须动态创建一个画布数组(每个画布还包括标签、文本框、按钮等子控件)

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


有更好的解决办法吗?是ArrayList,还是List或其他什么?

这似乎很明显,但由于您事先不知道要存储多少元素,因此应该使用
列表
列表
等。然后您可以使用方法
列表.添加()
列表.删除()

不要使用ArrayList,您希望您的数据是强类型的,并且能够动态地添加和删除项,这样才符合要求

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