【C#】DataGridView の 行選択時にチェックボックスの状態を変更する(その1)

C#,開発

おはようございます。

今日はちょっと単発のC#ネタです。

データグリッドビューにチェックボックスを配置して、
行を選択したらチェックの状態も一緒に変更するサンプルとなります。

スポンサーリンク

画面

Windows Form でプロジェクトを作成し、画面にデータグリッドビューを配置します。

画面の作成

先頭列をチェックボックス(DataGridViewCheckBoxColumn)にして、他は適当にテキストボックス列を2列を追加。

プロパティ

変更したプロパティはだいたい次のような感じ。

プロパティ説明デフォルト変更後
AllowUserToResizeRowsユーザーが列のサイズを変更できるかどうかTrueFalse
EditModeセルの編集が開始される方法を決定するモードEditOnKeystrokeOrF2EditProgrammatically
SelectionModeDataGridView のセルの選択方法RowHeaderSelectFullRowSelect
RowHeadersVisible行ヘッダーを含んでいる列が表示されるかどうかTrueFalse

メソッド

メソッドは、「CellClick」のみ追加。

プログラム

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SampleDataGridCheckbox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            dataGridView1.Rows.Add(false, "テスト1", "テスト1");
            dataGridView1.Rows.Add(false, "テスト2", "テスト2");
            dataGridView1.Rows.Add(false, "テスト3", "テスト3");
            dataGridView1.Rows.Add(false, "テスト4", "テスト4");
            dataGridView1.Rows.Add(false, "テスト5", "テスト5");
            dataGridView1.Rows.Add(false, "テスト6", "テスト6");

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)dataGridView1[0, e.RowIndex];
            if (cell.Value.ToString() == "False")
            {
                dataGridView1.Rows[e.RowIndex].SetValues(true);
            }
            else
            {
                dataGridView1.Rows[e.RowIndex].SetValues(false);
            }
        }
    }
}

初期表示時に、テスト用のデータを6件ほど、データグリッドビューの行に追加。

起動してみる

初期表示
行を選択
再度選択

無事に行を選択するとチェックされるようになりました。

まとめ

DataGridViewに表示するデータをDBから取得して、
DataSourceに設定するといった場合は、列の指定をインデックスではなく列名で指定した方が無難かと思います。

サクッとした話ですが以上。

ではでは。

 

スポンサーリンク


関連するコンテンツ

C#,開発C#,CSharp,DataGridView,プログラミング

Posted by doradora