我们可以创建一个UserControl的一维数组。 ..?

时间:2010-10-07 06:52:30

标签: c# vb.net winforms user-controls

我刚刚在WINFORMS中创建了一个"Usercontrol" - 它只包含一些带有某种风格的按钮。

我需要使用与数组(10)相同的方法并将其加载到表单中。

Ex:

Dim myButton() As Button = New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count - 1) {}

此处我的用户控件名称为ucSpecialButton

can we create a ONE-Dimensional Array of a WINFORM usercontrol.?

3 个答案:

答案 0 :(得分:3)

用MAKKAM的话说:是的,你可以。我猜你实际上不确定是否可以为表单添加动态数量的控件,因为在设计器中你无法定义任何数组,只需在表单上拖放一定数量的控件即可。

但是,实际上Visual Studio只是在后台生成一些代码,将这些控件添加到集合中。您也可以编写自己的代码,以动态地向集合中添加任意数量的UserControl。只需查看表单“.designer.cs”文件,了解其工作原理。

将MAKKAM的数组controls看作是这样的,例如:

public MyForm()
{
    InitializeComponent(); // this is the call to the auto-generated code

    // Here you could add you own code:
    foreach (Control control in controls)
    {
        this.Controls.Add(control); // this is how to add a control to the form.
    }
}

答案 1 :(得分:2)

是的,你可以。

Control[] controls = new Control[10]; 

那么,问题是什么?

答案 2 :(得分:0)

我刚刚注意到你编辑了你的问题。如果我做对了,你现在唯一缺少的是(我是C#家伙,可能是以下VB.NET代码中存在一些缺陷):

for i = 0 to dataset4Category(i).Tables(0).Rows.Count - 1
    myButton(i) = New ucSpecialButton();
    // ... specific button properties ...
next

因为,你在问题中粘贴的代码还没有创建按钮,它只为数组分配内存:

Dim myButton() As Button = New ucSpecialButton(
    dataset4Category(i).Tables(0).Rows.Count - 1) {}
这个地方的

New意味着为引用创建一个新数组,而不是创建新对象。这个地方的ucSpecialButton(...)不是对象的构造函数。相反,它仅表示您要为其准备数组的对象类型。你也可以抄写New Button(...)

顺便说一句:恕我直言,它应该是

`New ucSpecialButton(dataset4Category(i).Tables(0).Rows.Count)`

没有- 1。然而,在for循环中,- 1是正确的(大小为10的数组从0..9开始)。