public Form1 f1 = new Form1();
int p = 150;
int q = 100;
public void add()
{
//CheckBox c = new CheckBox();
//c.Location = new Point(p, q);
//c.Text = f1.sub[0];
//this.Controls.Add(c);
CheckBox chkBox = new CheckBox();
chkBox.Location = new Point(p, q);
chkBox.Text = "Checked";
chkBox.Checked = false;
chkBox.CheckState = CheckState.Checked;
chkBox.CheckedChanged += new EventHandler(chkBox_CheckedChanged);//
this.Controls.Add(chkBox);
chkBox.Text = f1.sub[1];//The problem is here... whatever value I supply
// to sub[] it gives the below mentioned error
}
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
此处sub[]
是form1中的list<string>
,其中包含5个值...
答案 0 :(得分:1)
好吧,在您访问子集合时,它似乎是空的。在执行此行之前:chkBox.Text = f1.sub[1];
查看集合中的内容。
答案 1 :(得分:1)
也许“官方”Form1(你在屏幕上看到的那个)有一个带有5个值的“sub”,但新创建的Form1(来自f1变量)是否也有5个值?错误消息说没有......
修改强>
如果您从Form1实例调用add()
方法,则将this
作为参数传递给方法,而不是创建new Form1()
。
答案 2 :(得分:0)
显然,sub中的索引位置1没有任何内容。
chkBox.Text = f1.sub[1];
列表sub
中的数据长度小于2.
如果您说它包含5个元素,请确保对该对象的引用仍然有效。我觉得你没有从你想要的列表中获取数据,而是可能是空的。简而言之,sub
并未指向您认为的列表。
提示:尽可能避免对代码中的值进行硬编码。以编程方式查找索引并使用它。示例(仅演示):
chkBox.Text = f1.sub[f1.sub.Count - 1];