int i = amount; //amount will always start at 0
int j = i + 1;
GroupBox[] verGroup;
verGroup = new GroupBox[i];
verGroup[i].Name = "verGroup" + i.ToString();
verGroup[i].Width = 400;
verGroup[i].Height = 120;
verGroup[i].Left = 5;
verGroup[i].Top = 5 + (verGroup[i].Height * i) + (10 * i);
verGroup[i].Text = "Verification #" + j.ToString();
pnlVer.Controls.Add(verGroup[i]);
它在verGroup [i] .Name中给了我一个IndexOutofRangeException。但索引是0,这肯定是它想要的?
我也试过
verGroup = new GroupBox[5]
但是抛出“对象引用未设置为对象的实例”错误。
如果有人能指出我正确的方向,将不胜感激。
答案 0 :(得分:5)
由于amount从0开始,并且您创建了一个大小为i的数组,因此您创建的是一个大小为0的数组。因此,您无法索引数组中的任何内容,因为它的长度为0.
第二个错误是因为您没有初始化组框。你需要说verGroup [i] = new GroupBox();初始化它。
答案 1 :(得分:0)
首先,你在这里分配一个GroupBox
数组:
GroupBox[] verGroup;
verGroup = new GroupBox[i];
但是,这不会在数组中分配GroupBox值。这需要单独处理:
GroupBox[] verGroup;
verGroup = new GroupBox[i];
for(int gb = 0; gb < i; ++gb)
verGroup[gb] = new GroupBox(); // This creates the individual group box elements
此外,如果i
为0,则表示创建零组框,然后尝试访问第一个(verGroup[0]
是第一个元素),这将失败。您可能需要这样做:
GroupBox[] verGroup;
verGroup = new GroupBox[i+1];
for(int gb = 0; gb < verGroup.Length; ++gb)
verGroup[gb] = new GroupBox(); // This creates the individual group box elements
答案 2 :(得分:0)
您的代码非常破碎,您只需要创建一次数组。那么你需要实例化数组中的每个项目。
verGroup[] = new GroupBox[amount];
for (int i = 0; i < amount; i++)
{
verGroup[i] = new GroupBox();
//set values and add to controls
}
答案 3 :(得分:0)
int i = amount; //amount will always start at 0
int j = i + 1;
GroupBox[] verGroup;
verGroup = new GroupBox[i];
verGroup[i] = new GroupBox();
verGroup[i].Name = "verGroup" + i.ToString();
verGroup[i].Width = 400;
verGroup[i].Height = 120;
verGroup[i].Left = 5;
verGroup[i].Top = 5 + (verGroup[i].Height * i) + (10 * i);
verGroup[i].Text = "Verification #" + j.ToString();
pnlVer.Controls.Add(verGroup[i]);
你必须有充分的理由说明你为什么要创建一个数组