DataGridView e.ColumnIndex超出范围

时间:2013-01-02 13:28:27

标签: c# winforms datagridview

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

当我调试以下代码时,我得到-1的{​​{1}}值。至于e.ColumnIndex,我得到了我点击的正确行。

e.RowIndex

我试图用静态int替换 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { form2.value = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); } 以查看它是否有效。当我添加int时,当我点击特定的行或列时,它不会做任何事情。

任何想法如何改变e.ColumnIndex或如何解决此问题。

2 个答案:

答案 0 :(得分:2)

e.ColumnIndex

-1表示正在选择RowHeader。您确定没有绑定到此事件的RowSelected事件吗?

在任何情况下,优良作法是在e.ColumnIndex事件e.RowIndex和{{CellClick事件中检查RowHeaderColumnHeader均为0或更高1}}单元格在点击时也会触发此事件,并且不会包含数据,这会让用户感到有些困惑。

答案 1 :(得分: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());
        }