单击索引超出了绑定范围

本文关键字:绑定 范围 索引 单击 | 更新日期: 2023-09-27 17:58:24

我需要获取datagridviewcellClick_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
  • 如何使用cellClick_event获取数据网格视图的最后一次编辑的cell's行索引
  • 除了datagridview.cellclick,还有其他事件可以解决吗

单击索引超出了绑定范围

假设您想将单击的行与当前正在编辑的行进行比较,这应该可以做到;

void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e) {
    int currentIndex = DataGridView.CurrentRow.Index;
    int clickedCellRowIndex = e.RowIndex;
    if (currentIndex == clickedCellRowIndex) {
        //do work
    }

将datagridview editeMode设置为EditonEnter。然后,当您在单元格中单击时,它应该会为您提供最后一个修改行的索引,即您已插入的单元格的行索引。

int i = dataGridView.CurrentRow.Index;

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

不能使用CellEndEdit事件吗。当调用此命令时,您将可以访问刚刚编辑过的行。然而,你必须想办法看看它是否真的被编辑了,我认为即使编辑被取消,这也被称为编辑。

B

它可能会帮助您完成

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