.Net(VB、C#)でDataGridViewの列や行を非表示、または削除する
列や行を非表示にする
DataGridViewの指定した列や行を非表示にするには、列(DataGridViewColumnオブジェクト)や行(DataGridViewRowオブジェクト)のVisibleプロパティをFalseにする。
1 2 3 4 5 | '先頭列を非表示にする DataGridView1.Columns(0).Visible = False '先頭行を非表示にする DataGridView1.Rows(0).Visible = False |
1 2 3 4 5 | //先頭列を非表示にする DataGridView1.Columns[0].Visible = false; //先頭行を非表示にする DataGridView1.Rows[0].Visible = false; |
列ヘッダーや行ヘッダーを非表示にする
列ヘッダーや行ヘッダーを非表示にするには、DataGridViewオブジェクトのColumnHeadersVisibleやRowHeadersVisibleプロパティをFalseにする。
1 2 3 4 5 | '列ヘッダーを非表示にする DataGridView1.ColumnHeadersVisible = False '行ヘッダーを非表示にする DataGridView1.RowHeadersVisible = False |
1 2 3 4 5 | //列ヘッダーを非表示にする DataGridView1.ColumnHeadersVisible = false; //行ヘッダーを非表示にする DataGridView1.RowHeadersVisible = false; |
列や行を削除する
列や行を非表示にした時は、グリッド上に表示されなくなるだけで、レコードが削除されるわけではない。
DataGridViewの指定した列や行を削除するには、DataGridViewColumnCollectionオブジェクトやDataGridViewRowCollectionオブジェクトのRemoveまたはRemoveAtメソッドを呼び出す。
列の名前やDataGridViewColumn(またはDataGridViewRow)オブジェクトを指定して削除するには、Removeメソッドを使う。
削除する列(行)の位置を指定して削除するには、RemoveAtメソッドを使う。
1 2 3 4 5 6 7 8 | '"Column1"を削除する DataGridView1.Columns.Remove("Column1") '先頭列を削除する DataGridView1.Columns.RemoveAt(0) '先頭行を削除する DataGridView1.Rows.RemoveAt(0) |
1 2 3 4 5 6 7 8 | //"Column1"を削除する DataGridView1.Columns.Remove("Column1"); //先頭列を削除する DataGridView1.Columns.RemoveAt(0); //先頭行を削除する DataGridView1.Rows.RemoveAt(0); |
選択行を全て削除する例。
1 2 3 4 5 6 7 | '選択されているすべての行を削除する Dim r As DataGridViewRow For Each r In DataGridView1.SelectedRows If Not r.IsNewRow Then DataGridView1.Rows.Remove(r) End If Next r |
1 2 3 4 5 6 7 8 | //選択されているすべての行を削除する foreach (DataGridViewRow r in DataGridView1.SelectedRows) { if (!r.IsNewRow) { DataGridView1.Rows.Remove(r); } } |
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 'ユーザ操作による行追加を無効化 DataGridView1.AllowUserToAddRows = False '変数定義 Dim idx As Integer '行追加(1行目) DataGridView1.Rows.Add() idx = DataGridView1.Rows.Count - 1 DataGridView1(0, idx).Value = "1a" DataGridView1(1, idx).Value = "1b" DataGridView1(2, idx).Value = "1c" 'DataGridView1.Rows(idx).Cells(0).Value = "aaa" でもOK '行追加(2行目) DataGridView1.Rows.Add() idx = DataGridView1.Rows.Count - 1 DataGridView1(0, idx).Value = "2a" DataGridView1(1, idx).Value = "2b" DataGridView1(2, idx).Value = "2c" '行変更(2行目) idx = DataGridView1.Rows.Count - 1 DataGridView1(0, idx).Value = "change2a" DataGridView1(1, idx).Value = "change2b" DataGridView1(2, idx).Value = "change2c" '行削除(1行目) DataGridView1.Rows.RemoveAt(0) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //ユーザ操作による行追加を無効化 dataGridView1.AllowUserToAddRows = false; //変数定義 int idx; //行追加(1行目) DataGridView1.Rows.Add(); idx = DataGridView1.Rows.Count - 1; DataGridView1[0, idx].Value = "1a"; DataGridView1[1, idx].Value = "1b"; DataGridView1[2, idx].Value = "1c"; //DataGridView1.Rows[idx].Cells[0].Value = "aaa"; でもOK //行追加(2行目) DataGridView1.Rows.Add(); idx = DataGridView1.Rows.Count - 1; DataGridView1[0, idx].Value = "2a"; DataGridView1[1, idx].Value = "2b"; DataGridView1[2, idx].Value = "2c"; //行変更(2行目) idx = DataGridView1.Rows.Count - 1; DataGridView1[0, idx].Value = "change2a"; DataGridView1[1, idx].Value = "change2b"; DataGridView1[2, idx].Value = "change2c"; //行削除(1行目) DataGridView1.Rows.RemoveAt(0); |
備考
複数行を追加する際に追加行数が判明している場合は、Rows.Addのパラメータに行数を指定して一度に追加すると速い。
全ての行を削除する時はDataGridView.Rows.Clear()を利用する。