注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
DataGridViewで選択されている列、行、セルを取得するには、DataGridViewオブジェクトのSelectedColumns、SelectedRows、SelectedCellsプロパティを使用します。
なお、SelectionModeプロパティにより、行や列が選択できるか否かを指定できます。SelectionModeプロパティについて詳しくは、こちらで説明しています。
'選択されているセルを表示 Console.WriteLine("選択されているセル") For Each c As DataGridViewCell In DataGridView1.SelectedCells Console.WriteLine("{0}, {1}", c.ColumnIndex, c.RowIndex) Next c '選択されている行を表示 Console.WriteLine("選択されている行") For Each r As DataGridViewRow In DataGridView1.SelectedRows Console.WriteLine(r.Index) Next r '選択されている列を表示 Console.WriteLine("選択されている列") For Each c As DataGridViewColumn In DataGridView1.SelectedColumns Console.WriteLine(c.Index) Next c
//選択されているセルを表示 Console.WriteLine("選択されているセル"); foreach (DataGridViewCell c in DataGridView1.SelectedCells) { Console.WriteLine("{0}, {1}", c.ColumnIndex, c.RowIndex); } //選択されている行を表示 Console.WriteLine("選択されている行"); foreach (DataGridViewRow r in DataGridView1.SelectedRows) { Console.WriteLine(r.Index); } //選択されている列を表示 Console.WriteLine("選択されている列"); foreach (DataGridViewColumn c in DataGridView1.SelectedColumns) { Console.WriteLine(c.Index); }
また、特定の列、行、セルが選択されているか調べるには、Selectedプロパティを使います。Selectedプロパティについては、後述します。
選択されている範囲が広いと、これらのプロパティのパフォーマンスは低下します。
もし選択されているセルの数だけを取得したいのであれば、「DataGridView1.SelectedCells.Count」のように取得するのではなく、DataGridView.GetCellCountメソッドを使用したほうが効率的です。同様に、選択されている列の数はGetColumnCountメソッドを、行の数はGetRowCountメソッドを使用した方が効率的です。
'選択されているセルの数 Console.WriteLine( _ DataGridView1.GetCellCount(DataGridViewElementStates.Selected)) '選択されている行の数 Console.WriteLine( _ DataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)) '選択されている列の数 Console.WriteLine( _ DataGridView1.Columns.GetColumnCount(DataGridViewElementStates.Selected))
//選択されているセルの数 Console.WriteLine( DataGridView1.GetCellCount(DataGridViewElementStates.Selected)); //選択されている行の数 Console.WriteLine( DataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)); //選択されている列の数 Console.WriteLine( DataGridView1.Columns.GetColumnCount(DataGridViewElementStates.Selected));
DataGridView内のすべてセルが選択されているか調べるには、DataGridView.AreAllCellsSelectedメソッドを使用するようにします。
補足:AreAllCellsSelectedメソッドにより、共有行が非共有となる可能性があります。
また、SelectionModeプロパティをFullRowSelectやFullColumnSelectにして行や列全体が選択されるようにしておくことにより、SelectedCellsよりも効率的なSelectedColumnsやSelectedRowsプロパティで選択場所を調べることができるようになります。
指定した列、行、セルを選択するには、SelectedプロパティをTrueにします。
'(0, 0)のセルを選択する DataGridView1(0, 0).Selected = True 'インデックス1の行を選択する DataGridView1.Rows(1).Selected = True 'インデックス2の列を選択する DataGridView1.Columns(2).Selected = True
//(0, 0)のセルを選択する DataGridView1[0, 0].Selected = true; //インデックス1の行を選択する DataGridView1.Rows[1].Selected = true; //インデックス2の列を選択する DataGridView1.Columns[2].Selected = true;
ただし、SelectionModeプロパティの設定により行や列が選択できないようになっているときに行や列を選択しようとしても無視されます。また、共有行を選択しようとすると、例外がスローされます。
なお、全てのセルを選択するには、DataGridView.SelectAllメソッドを使用すべきです。また、全ての選択を解除するには、DataGridView.ClearSelectionメソッドを使用します。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。