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
  • を使用して、datagridviewの最後に編集されcell'sた行インデックスを取得する方法は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

datagridviewediteModeをEditonEnterに設定します。次に、セルをクリックすると、最後に変更された行のインデックスが表示されます。これは、入力したセルの行インデックスです。

int i = dataGridView.CurrentRow.Index;

または、前の行のインデックスを編集した後、上記の値を「Cell_Leave」イベントハンドルに記録できます。

于 2013-02-08T11:32:40.440 に答える
0

CellEndEdit イベントを使用できませんか。これが呼び出されると、編集したばかりの行にアクセスできるようになります。ただし、編集がキャンセルされた場合でも呼び出されると思われるため、実際に編集されたかどうかを確認する方法を見つける必要があります。

B

于 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 に答える