HeyCHのブログ

慢性疲労のへいちゃんです

【C#】DataGridViewに何が表示できるか確認しよう

プロジェクトの準備

Form1にDataGridViewを配置し、AnchorプロパティをTop,Bottom,Left,Rightにして、追加、削除の☑をはずし、Form1をダブルクリックしてForm1_Loadイベントを追加しただけです。
f:id:HeyCH:20200411232723p:plain

  • 列の追加
        private void Form1_Load(object sender, EventArgs e) {
            dataGridView1.Columns.AddRange(new DataGridViewColumn[] {
                new DataGridViewTextBoxColumn(){ HeaderText = "Column1" },
                new DataGridViewComboBoxColumn(){ HeaderText = "Column2" },
                new DataGridViewCheckBoxColumn(){ HeaderText = "Column3" },
                new DataGridViewImageColumn() { HeaderText = "Column4" }
            });
        }
  • 列の追加
        private void Form1_Load(object sender, EventArgs e) {
            //列の幅を自動調整する
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            //行の高さを自動調整する
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

            dataGridView1.Columns.AddRange(new DataGridViewColumn[] {
                new DataGridViewTextBoxColumn(){ HeaderText = "Column1" },
                new DataGridViewComboBoxColumn(){ HeaderText = "Column2" },
                new DataGridViewCheckBoxColumn(){ HeaderText = "Column3" },
                new DataGridViewImageColumn() { HeaderText = "Column4" },
                new DataGridViewButtonColumn() { HeaderText = "Column5" },
                new DataGridViewLinkColumn(){ HeaderText = "Column6" }
            });

            //セルが押された時のイベントは以下のイベントで拾う
            dataGridView1.CellContentClick += DataGridView1_CellContentClick;

            for (int i = 0; i < 5; i++) {
                AddRow();
            }
        }

        //Rowを追加する関数
        private void AddRow() {
            var r1 = new DataGridViewRow();
            var cc1 = new DataGridViewComboBoxCell();
            cc1.Items.Add("Combo1");
            cc1.Items.Add("Combo2");
            cc1.Items.Add("Combo3");
            var bc1 = new DataGridViewButtonCell() { Value = "Button" };
            r1.Cells.AddRange(new DataGridViewCell[]{
                new DataGridViewTextBoxCell(){ Value="TextBox" },
                cc1,
                new DataGridViewCheckBoxCell(){ Value=true },
                new DataGridViewImageCell(){ Value=Image.FromFile(@"C:\Users\BlackTomato\Desktop\Clipboard03.png") },
                bc1,
                new DataGridViewLinkCell(){ Value = "https://heych.hatenablog.com/entry/2020/04/08/005123" }
            });
            dataGridView1.Rows.Add(r1);
        }
        private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
            if (e.ColumnIndex == 4) {
                MessageBox.Show((e.RowIndex + 1) + "行目のButtonが押されました。");
            } else if (e.ColumnIndex == 5) {
                System.Diagnostics.Process.Start(dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString());
            }
        }

f:id:HeyCH:20200412005231p:plain