0
0

[備忘録] C# DataGridView

Last updated at Posted at 2023-10-20

[備忘録] 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;
      
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0