1

DataGridView の現在の行のインデックスを取得したいと考えています。問題は、現在の行が新しい行である場合、CurrentRow が新しい行ではない最後の行に設定されることです。行が選択されている場合、それが現在の行であるとは限らず、現在の行が必ずしも選択されているとは限らないため、行が選択されているかどうかを確認できません。

新しい行のインデックスを取得できますが、新しい行が現在の行であるかどうかはどうすればわかりますか?

4

3 に答える 3

3

次のコードを使用して、CellClick イベントにフックしました。

private void uiEntries_CellClick(object sender, DataGridViewCellEventArgs e)
{
    Console.WriteLine(e.RowIndex == uiEntries.NewRowIndex);
}

その条件が真の場合、ユーザーは新しい行を「選択」しました。その情報に基づいて、新しい行が実際にはコレクションに存在しないため、実際に何かを行う前に (..Rows.Add() メソッドを使用して) 新しいレコードを実際に挿入する必要がある場合があります。新しい行を表すプレースホルダーとしてそこにあるだけです。

于 2009-09-09T21:38:09.743 に答える
0

このプロパティ値で問題を解決できますか?

dataGridView1.CurrentCell.RowIndex

于 2009-08-16T13:40:28.857 に答える
0

CellEnter イベントを使用して、CurrentCell.RowIndex をフォーム変数に保存します。別のボタンをクリックすると、必要な新しい行インデックスではなく、最後の既存の行インデックスでこのイベントが発生するため、そのケースを無視するようにフォーカスをテストします。

これにより、CellClick イベントで行うように、カーソルを新しい行に移動する可能性のあるすべてのキーおよびマウス アクションをチェックする必要がなくなります。

VB から自動変換されたコード:

private int ActualCurrentRowIndex;

private void DataGridView1_CellEnter(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
    if (DataGridView1.Focused) {
        ActualCurrentRowIndex = DataGridView1.CurrentCell.RowIndex;
    }
}
于 2013-02-24T10:53:17.663 に答える