我正在尝试在for循环中创建动态复选框。但是我在编译时遇到错误,但是当我运行create checkbox按钮并运行该函数时。 你能告诉我我做错了吗?
public void CreateCheckBox (int i)
{
int y = 10;
CheckBox[] _cb = new CheckBox[i];
String chkBox = "chkBox_";
for (int n = 0; n<i; n++)
{
_cb[n].Location = new Point(10, y);
_cb[n].Name= chkBox + n.ToString();
form1.Controls.Add(_cb[n]);
y+= 15;
}
}
答案 0 :(得分:6)
在循环内部,您必须创建一个新的复选框实例。
for (int n = 0; n<i; n++)
{
_cb[n] = new CheckBox();
_cb[n].Location = new Point(10, y);
_cb[n].Name= chkBox + n.ToString();
form1.Controls.Add(_cb[n]);
y+= 15;
}
答案 1 :(得分:0)
定义Array
Checkboxes
时,数组中的对象将初始化为null
。您需要使用new Checkbox()
创建一个Checkbox实例。
在我看来,由于Form管理控件集合,因此您无需将它们保存到Checkbox[]
中。因此,此代码段可能更具可读性:
public void CreateCheckBox (int max)
{
String name = "chkBox_";
int y = 10;
for (int i = 0; n < max; i++)
{
Checkbox current = new Checkbox();
current.Location = new Point(10, y);
current.Name= name + i.ToString();
form1.Controls.Add(current);
y+= 15;
}
}