我刚刚在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.?
答案 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开始)。