private void dataGridViewx2_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
 
                if (sqlarray1.Count < 4 & sqlarray2.Count < 4)
                {
                    string value1 = "列名";
                    string value2 = "行名";
                    sqlarray1.Add(value1);
                    sqlarray2.Add(value2);
                }
                else
                {
                    string value1 = Convert.ToString(dataGridView2[e.ColumnIndex, e.RowIndex].Value);
                    string Column0 = Convert.ToString(dataGridView2.Rows[e.RowIndex].Cells[0].Value);
                    sqlarray1.Add(value1);
                    sqlarray2.Add(Column0);
                    for (int i = 4; i <= sqlarray1.Count; i++)
                    {
                        string name = sqlarray2[i].ToString();
                        string value = sqlarray1[i].ToString();
                    }
                }
            
        }

解决方案 »

  1.   


    for (int i = 4; i <= sqlarray1.Count-1; i++)   //这个地方改下
      {
      string name = sqlarray2[i].ToString();
      string value = sqlarray1[i].ToString();
      }成功就给分吧...数组是从0开始计数的它的长度是array.length    所以只能到array.length-1
      

  2.   

    你确定sqlarray1.Count-1是大于4的??
      

  3.   

    改成这个sqlarray1.Count-1后跑下吧       如果还超出的话估计就是你程序设计思路上出错了
      

  4.   

    为什么这个也报错,“索引超出范围。必须为非负值并小于集合大小”
    private void dataGridViewx2_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                    if (sqlarray1.Count < 4 & sqlarray2.Count < 4)
                    {
                        string value1 = "列名";
                        string value2 = "行名";
                        sqlarray1.Add(value1);
                        sqlarray2.Add(value2);                }
                    else
                    {
                        string value1 = Convert.ToString(dataGridView2[e.ColumnIndex, e.RowIndex].Value);                    string Column0 = Convert.ToString(dataGridView2.Rows[e.RowIndex].Cells[0].Value);
                        sqlarray1.Add(value1);
                        sqlarray2.Add(Column0);
                        if (sqlarray2.Contains(Column0))
                        {
                            string sqlinsert = "UPDATE MaterialParaBro SET MaterialNameCN=" + "'" + textBox1.Text + "'" + "," + "ParameterName=" + "'" + Column0 + "'" + "," + "ParameterValue=" + "'" + value1 + "'";
                            sqlarray3.Add(sqlinsert);                 
                        }
                        else
                        {                        string sqlinsert = "insert into MaterialParaBro(MaterialNameCN,ParameterName,ParameterValue) values (" + "'" + textBox1.Text + "'" + "," + "'" + Column0 + "'" + "," + "'" + value1 + "'" + ")";
                            sqlarray3.Add(sqlinsert);
                        }
                        
                    }
                
            }