索引超出了点击范围

时间:2013-02-08 11:24:42

标签: c# winforms datagridview

我需要使用datagridview获取cellClick_event的最后编辑单元格的行索引。

我试过这样:

    private void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var lastIndex = DataGridView.SelectedRows[DataGridView.SelectedRows.Count - 1].Index;
        var currentIndex = DataGridView.CurrentRow.Index;
        if (currentIndex != lastIndex)
        {
            //code
        }
        else
        {
        }
    }

但它不起作用。我收到了错误:

index out of bound
  • 如何使用cell's获取数据网格视图的上次编辑的cellClick_event行索引?
  • datagridview.cellclick以外还有其他事件可以解决吗?

4 个答案:

答案 0 :(得分:1)

假设您要比较单击当前正在编辑的行的行,这应该可以解决问题;

void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e) {

    int currentIndex = DataGridView.CurrentRow.Index;
    int clickedCellRowIndex = e.RowIndex;

    if (currentIndex == clickedCellRowIndex) {
        //do work
    }

答案 1 :(得分:0)

将datagridview editeMode设置为EditonEnter。然后,当您单击单元格时,它应该为您提供上次修改的行的索引,该行是您已进入的单元格的行索引。

int i = dataGridView.CurrentRow.Index;

或者,如果您在编辑上一行的索引之后,可以在“Cell_Leave”事件句柄中记录上述值。

答案 2 :(得分:0)

你不能使用CellEndEdit事件。调用此方法后,您将可以访问刚刚编辑过的行。但是你必须找到一种方法来查看它是否实际被编辑过,因为我认为即使编辑被取消也会调用它。

答案 3 :(得分:0)

这可能对你有所帮助

   private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[e.ColumnIndex];
    }