注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
現在のセル(フォーカスのあるセル)は、DataGridViewオブジェクトのCurrentCellプロパティで取得できます。現在のセルが存在しないときは、Nothing(C#ではnull)になります。
'現在のセルの値を表示 Console.WriteLine(DataGridView1.CurrentCell.Value) '現在のセルの列インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) '現在のセルの行インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.RowIndex)
//現在のセルの値を表示 Console.WriteLine(DataGridView1.CurrentCell.Value); //現在のセルの列インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex); //現在のセルの行インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
補足:現在のセルが新しい行(DataGridViewの最後の行)にあるときにCurrentCellプロパティで現在のセルの情報を取得すると、現在のセルがその上のセルに変更され、CurrentCellプロパティは変更後のセルの情報を返すようです。ただし、CurrentCellChangedやSelectionChangedイベントでCurrentCellプロパティを取得した時は、そうならないようです。
現在のセルの位置を取得するだけならば、DataGridView.CurrentCellAddressプロパティを使用します。CurrentCellAddressプロパティを使用すれば、セルに直接アクセスせず、共有行が非共有行になることを防ぐことができます。
補足:現在のセルがない場合は、CurrentCellAddressのXとYは-1になります。
Console.WriteLine("現在のセルの位置は、({0}, {1})です。", _ DataGridView1.CurrentCellAddress.X, _ DataGridView1.CurrentCellAddress.Y)
Console.WriteLine("現在のセルの位置は、({0}, {1})です。", DataGridView1.CurrentCellAddress.X, DataGridView1.CurrentCellAddress.Y);
補足:現在のセルのある行を取得するには、DataGridView.CurrentRowプロパティを使用します。
現在のセルは、DataGridViewオブジェクトのCurrentCellプロパティを設定することにより、変更できます。
(0, 0)を現在のセルにする例を以下に示します。
'(0, 0)を現在のセルにする
DataGridView1.CurrentCell = DataGridView1(0, 0)
//(0, 0)を現在のセルにする
DataGridView1.CurrentCell = DataGridView1[0, 0];
このように現在のセルを変更したとき、そのセルが表示されていなければ、そのセルが表示されるようにスクロールされます。
CurrentCellプロパティにNothing(C#ではnull)を設定すると、現在のセルは一時的になくなりますが、DataGridViewがフォーカスを受け取ると、DataGridView.FirstDisplayedCellプロパティに設定されているセルが自動的に現在のセルになります。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。