[備忘録] DataGridView
Agenda
1. Info
- オブジェクトのnameは、初期配置したときの名称 dataGridView1 とします
2. packages
-
■ NuGetで導入したライブラリ
特になし
3. Rec
3.1. 表示関連
-
表示関連
-
複数行選択不可
dataGridView1.MultiSelect = false;
-
初めの列 読み取り専用
dataGridView1.Columns[0].ReadOnly = true;
-
初めの行 読み取り専用
dataGridView1.Rows[0].ReadOnly = true;
-
スタイル変更
dataGridView1.EnableHeadersVisualStyles = false; dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.LightCyan; dataGridView1.Columns[0].DefaultCellStyle.BackColor = Color.LightGoldenrodYellow;
-
フォント&文字サイズ変更
dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("メイリオ", 14); dataGridView1.DefaultCellStyle.Font = new Font("メイリオ", 14);
-
ソート無効化
foreach (DataGridViewColumn column in this.dataGridView1.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; }
-
すべての列の幅を自動調整する
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
-
はじめの列の幅を自動調整する
dataGridView1.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.AllCells);
-
列の幅指定(添え字1 :: 2列目を300pxにする場合)
dataGridView1.Columns[1].Width = 300;
-
すべての行の高さを自動調整
if (dataGridView1.Rows.Count > 0) { dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells); }
-
はじめの行の高さを自動調整
if (dataGridView1.Rows.Count > 0) { dataGridView1.AutoResizeRow(0, DataGridViewAutoSizeRowMode.AllCells); }
-
行テンプレートの高さを設定
dataGridView1.RowTemplate.Height = 50;
-
行の最低の高さを設定
dataGridView1.RowTemplate.MinimumHeight = 50;
-
1列目をidなどキーとして扱いたい場合の読み取り専用で色変更
dataGridView1.Columns[0].ReadOnly = true; dataGridView1.Columns[0].DefaultCellStyle.BackColor = Color.LightYellow;
-
3カラム目のセル内改行を反映
dataGridView1.Columns[4].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
-
奇数行の背景色変更
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.WhiteSmoke;
-
新しい行を追加、削除できないようにする
dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false;
-
カラム初期化
dataGridView1.Columns.Clear();
-
ヘッダーの背景色、境界線変更
// Visualスタイルを使用しない dataGridView1.EnableHeadersVisualStyles = false; // 列ヘッダの背景色を変更 dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Yellow; // 行ヘッダの背景色を変更 dataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.Green; // 列ヘッダと行ヘッダの境界線を変更 dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
-
列名変更
var col = dataGridView1.Columns["ID"]; col.HeaderText = "コード";
-
3.2. DataGridViewをDataTableに変換
-
DataGridViewをDataTableに変換
-
dataGridView1 を変更すると dataGridView2 も変わってしまう
var data = (DataTable)dataGridView1.DataSource; dataGridView2.DataSource = data;
-
変えたくない場合は dataGridView1 のコピーを作成する
var data = (DataTable)dataGridView1.DataSource; var newDt = data.Copy();
-
3.3. ボタン追加
-
ボタン追加
-
列にボタン追加
//DataGridViewButtonColumnの作成 DataGridViewButtonColumn column = new DataGridViewButtonColumn(); //列の名前を設定 column.Name = "詳細"; //全てのボタンに"詳細閲覧"と表示する column.UseColumnTextForButtonValue = true; column.Text = "詳細閲覧"; //DataGridViewに追加する dataGridView1.Columns.Add(column);
-
3.4. 編集関連
-
編集関連
-
編集ロック
//dataGridView1のセルを読み取り専用にする dataGridView1.ReadOnly = true; //dataGridView1の2番目の列を読み取り専用にする dataGridView1.Columns[1].ReadOnly = true; //dataGridView1の3番目の行を読み取り専用にする dataGridView1.Rows[2].ReadOnly = true; //dataGridView1の(0, 0)のセルを読み取り専用にする dataGridView1[0, 0].ReadOnly = true; //ユーザーがセルを編集できないようにする dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
-
行選択、選択解除、ソート無効化
//(0, 0)のセルを選択する dataGridView1[0, 0].Selected = true; //インデックス1の行を選択する dataGridView1.Rows[1].Selected = true; //インデックス2の列を選択する dataGridView1.Columns[2].Selected = true;
-
選択された行の一番左の列の値(添え字 0)取得
int idInt = (int)dataGridView1.CurrentRow.Cells[0].Value;
-
行選択(3行目)
dataGridView1.Rows[2].Selected = true;
-
選択解除
dataGridView1.ClearSelection();
-
ソート無効化
foreach (DataGridViewColumn column in this.dataGridView1.Columns) { column.SortMode = DataGridViewColumnSortMode.NotSortable; }
-
複数行選択させない
dataGridView1.MultiSelect = false;
-
セルを選択すると行全体が選択される
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
-