c #Index超出了数组的范围

时间:2015-08-13 09:42:47

标签: c# mysql visual-studio-2010 visual-studio c#-4.0

你好我得到了#34;索引超出了阵列的范围"如果我将值(i)放在 itemsWS.getItemInfo(itemLis [i] .ToString())

FIELDTIME

(这是数据库)

enter image description here

问题是如果我用[0]替换[i]。它只显示数据库中的第一个值项

(如果我用[0]替换[i],这里是GUI)点击任何按钮都会重复相同的输出

enter image description here

请非常感谢任何帮助。我尝试使用生成的新按钮来显示MySQL中的项目,这些按钮将显示在datagridview上。感谢

1 个答案:

答案 0 :(得分:0)

尝试将i的值存储在委托示例中的局部变量中:

myButtons.Click += delegate
{
  …
  int local_i = i;
  itemDetail = itemsWS.getItemInfo(itemLis[local_i].ToString());
  …
}

在委托实际执行时,i的值可能超出范围。

<强>更新 如果没有看到应用程序中的所有其他代码,则很难确定,但是在委托执行时,itemLis可能不再包含该索引处的项目。

尝试使用foreach循环,这样就不会在委托执行时从itemLis数组中检索项目。

foreach (var item in itemLis)
{
 itemDetails = itemsWS.getItemInfo(item);
    ....
    myButtons.Click += delegate
         {
         ...
         itemDetail = itemsWS.getItemInfo(item);
         ...    
     }
  ...
}