DataGridViewの現在のセルを取得、または変更する注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 現在のセルを取得する現在のセル(フォーカスのあるセル)は、DataGridViewオブジェクトのCurrentCellプロパティで取得できます。現在のセルが存在しないときは、Nothing(C#ではnull)になります。 [VB.NET] '現在のセルの値を表示 Console.WriteLine(DataGridView1.CurrentCell.Value) '現在のセルの列インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) '現在のセルの行インデックスを表示 Console.WriteLine(DataGridView1.CurrentCell.RowIndex) [C#] //現在のセルの値を表示 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になります。
[VB.NET]
Console.WriteLine("現在のセルの位置は、({0}, {1})です。", _
DataGridView1.CurrentCellAddress.X, _
DataGridView1.CurrentCellAddress.Y)
[C#]
Console.WriteLine("現在のセルの位置は、({0}, {1})です。",
DataGridView1.CurrentCellAddress.X,
DataGridView1.CurrentCellAddress.Y);
補足:現在のセルのある行を取得するには、DataGridView.CurrentRowプロパティを使用します。 現在のセルを変更する現在のセルは、DataGridViewオブジェクトのCurrentCellプロパティを設定することにより、変更できます。 (0, 0)を現在のセルにする例を以下に示します。
[VB.NET]
'(0, 0)を現在のセルにする
DataGridView1.CurrentCell = DataGridView1(0, 0)
[C#]
//(0, 0)を現在のセルにする
DataGridView1.CurrentCell = DataGridView1[0, 0];
このように現在のセルを変更したとき、そのセルが表示されていなければ、そのセルが表示されるようにスクロールされます。 CurrentCellプロパティにNothing(C#ではnull)を設定すると、現在のセルは一時的になくなりますが、DataGridViewがフォーカスを受け取ると、DataGridView.FirstDisplayedCellプロパティに設定されているセルが自動的に現在のセルになります。 |
|
Copyright 2002-2008 DOBON!. All rights reserved.
|