0

我需要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'sdatagridview 的最后编辑的行索引cellClick_event
  • datagridview.cellclick除了解决它还有其他事件吗?
4

4 回答 4

1

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

void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e) {

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

    if (currentIndex == clickedCellRowIndex) {
        //do work
    }
于 2013-02-08T11:50:50.160 回答
0

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

int i = dataGridView.CurrentRow.Index;

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

于 2013-02-08T11:32:40.440 回答
0

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

于 2013-02-08T11:51:02.577 回答
0

这可能会帮助你

   private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[e.ColumnIndex];
    }
于 2013-02-08T12:40:52.307 回答