1

我有一个datagridview,无论我点击什么单元格都会返回一个超出索引的错误。

当我调试以下代码时,我得到一个-1. e.ColumnIndex至于e.RowIndex,我得到了我点击的正确行。

 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        form2.value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    }

我试图e.ColumnIndex用静态 int 替换它只是为了看看它是否有效。当我添加 int 时,当我单击特定的行或列时它不会做任何事情。

任何人都知道如何更改ColumnIndex或解决此问题。

4

2 回答 2

2

-1e.ColumnIndex表示RowHeader正在被选中。你确定你没有RowSelected绑定到这个事件的事件吗?

e.ColumnIndex在任何情况下,在任何情况下检查和e.RowIndex都为 0 或更大是一种很好的做法CellClick-RowHeaderColumnHeader单元格在单击时也会触发此事件,并且不会包含数据,这会让用户感到有些困惑。

于 2013-01-02T13:35:39.880 回答
0

试试这个

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1) return;
            if (e.ColumnIndex == -1) return;
            Console.WriteLine(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
        }
于 2013-01-02T14:36:04.377 回答