datagridview控件中,
 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            string str = Convert.ToString(dataGridView1[e.ColumnIndex, e.RowIndex].Value);
        }
添加这个事件处理,
抛出异常,未处理 System.ArgumentOutOfRangeException
  Message="索引超出范围。必须为非负值并小于集合大小。\r\n参数名: index"
  Source="mscorlib"
  ParamName="index"


这是为啥啊?我哪里做错了啊?

解决方案 »

  1.   

    我不知道我记错没, 好像有一些特殊的地方, rowIndex或者cellIndex可能是-1的。
    好像是Header上, 要不就是前面什么地方。异常蹦出来的时候, 你看下rowIndex和cellIndex的值是多少。
      

  2.   

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
    if((e.ColumnIndex>=0) && (e.RowIndex>=0))
    {
    string str = Convert.ToString(dataGridView1[e.ColumnIndex, e.RowIndex].Value);
    }}
      

  3.   

    dataGridView有没有自动增长行啊?判断下行数和列数先
      

  4.   

    程序运行时就会调用dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)方法,此时的e.ColumnIndex=0;e.RowIndex=-1;
    而e.RowIndex必须是>-1才可以的.