2019-09-06に投稿

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

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

画面

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

画面の作成

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

プロパティ

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

プロパティ
説明
デフォルト
変更後

AllowUserToResizeRows
ユーザーが列のサイズを変更できるかどうか
True
False

EditMode
セルの編集が開始される方法を決定するモード
EditOnKeystrokeOrF2
EditProgrammatically

SelectionMode
DataGridView のセルの選択方法
RowHeaderSelect
FullRowSelect

RowHeadersVisible
行ヘッダーを含んでいる列が表示されるかどうか
True
False

メソッド

メソッドは、「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に設定するといった場合は、列の指定をインデックスではなく列名で指定した方が無難かと思います。

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

ではでは。

 

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント