c# - 指数数组的边界之外 。但是所有数组都是正确的

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

你好,如果我将值 (i) 放入 itemsWS.getItemInfo(itemLis[i].ToString()),我会收到“索引超出数组范围” p>

object[] itemDetails;
object[] itemLis = itemsWS.searchItem("", "bread", "all");
int xs = 35;
int clefts = 0;

for (int i = 0; i < itemLis.Length; i++)

{
    itemDetails = itemsWS.getItemInfo(itemLis[i].ToString());
    Button myButtons = new Button();
    myButtons.Click += delegate
    {

        dataGridView1.ColumnCount = 11;

        dataGridView1.Columns[0].Name = "Item Code";
        dataGridView1.Columns[1].Name = "Description";
        dataGridView1.Columns[2].Name = "Sale Price";
        dataGridView1.Columns[3].Name = "Category";
        dataGridView1.Columns[4].Name = "Type";
        dataGridView1.Columns[5].Name = "Status";
        dataGridView1.Columns[6].Name = "Low Count";
        dataGridView1.Columns[7].Name = "Medium Count";
        dataGridView1.Columns[8].Name = "High Count";
        dataGridView1.Columns[9].Name = "Item Picture";
        dataGridView1.Columns[10].Name = "TEST";

        //here is where i'm getting error if i put i on the []

        itemDetails = itemsWS.getItemInfo(itemLis[i].ToString());

        //

        dataGridView1.Rows.Add(itemDetails);
        MessageBox.Show("data grid displayed!");

    };


    myButtons.Text = itemDetails[1].ToString() + "\n  " + itemDetails[2].ToString();
    myButtons.Top = cleft * 180;
    myButtons.Left = 70;
    myButtons.Location = new Point(xs, clefts);
    myButtons.Size = new Size(100, 60);
    tabPage1.Controls.Add(myButtons);
    xs += 135;

    if (xs >= 537)
    {
        xs = 35;
        clefts += 80;
    }

(这是数据库)

enter image description here

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

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

enter image description here

如有任何帮助,我们将不胜感激。我正在尝试使用生成的新按钮显示 MySQL 中的项目,这些按钮将显示在 datagridview 上。谢谢

注意:itemsWS 是来自

的 Web 服务

private KPWSItems itemsWS = new KPWSItems();

最佳答案

试试这个

for (int i = 0; i < itemLis.Length; i++)
{
    itemDetails = itemsWS.getItemInfo(itemLis[i].ToString());
    Button myButtons = new Button();
    //myButtons.Tag = i;
    myButtons.Tag = itemDetails;
    myButtons.Click += (sender, args) =>
    {
         var button = sender as Button;
         dataGridView1.ColumnCount = 11;
         dataGridView1.Columns[0].Name = "Item Code";
         dataGridView1.Columns[1].Name = "Description";
         dataGridView1.Columns[2].Name = "Sale Price";
         dataGridView1.Columns[3].Name = "Category";
         dataGridView1.Columns[4].Name = "Type";
         dataGridView1.Columns[5].Name = "Status";
         dataGridView1.Columns[6].Name = "Low Count";
         dataGridView1.Columns[7].Name = "Medium Count";
         dataGridView1.Columns[8].Name = "High Count";
         dataGridView1.Columns[9].Name = "Item Picture";
         dataGridView1.Columns[10].Name = "TEST";

         //dataGridView1.Rows.Add(itemsWS.getItemInfo(itemLis[(int)button.Tag].ToString())
         dataGridView1.Rows.Add((object[])button.Tag));

         MessageBox.Show("data grid displayed!");
    };


    myButtons.Text = itemDetails[1].ToString() + "\n  " + itemDetails[2].ToString();
    myButtons.Top = cleft * 180;
    myButtons.Left = 70;
    myButtons.Location = new Point(xs, clefts);
    myButtons.Size = new Size(100, 60);
    tabPage1.Controls.Add(myButtons);
    xs += 135;

    if (xs >= 537)
    {
       xs = 35;
       clefts += 80;
    }

关于c# - 指数数组的边界之外 。但是所有数组都是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001546/

相关文章:

c++ - 应用程序无法正确启动 (0xc0000013)。单击确定关闭应用程序

windows - Windows系统还原后恢复visual studio文件

c# - itext 基于现有 PDF 创建 pdf,并更改内容

mysql - 无法在 Windows XP SP3 上启动 MySQL Server 5.1 作为服务

c# - 使用内连接和左外连接将 6 个表连接在一起 - LINQ

mysql - WHERE语句一侧的SQL Lower()对部分结果有效,但不是全部?

mysql - 如何选择选定日期的查询[2010-11-04]以使用mysql显示日期

C++ MySQL 链接器错误

c# - 带有 Nest 和 Field Suffix 的 MultiMatch 查询

c# - ASP.NET 照片 API(Shutterfly 等 ..)