【C#】dataGridViewに追加したチェックボックスの列のヘッダをクリックしたらすべてチェックするには①

この記事では、dataGridViewに追加したチェックボックスの列のヘッダをクリックしたらすべてチェックする方法についてご説明します。

【動画】dataGridViewのチェックボックスのチェックをすべて付ける実際の動き

本題に入る前に、まずは次の動画をご覧ください。


dataGridViewをクリックするとCellClickイベントが呼び出されてdataGridViewのどのセルをクリックしたかを判定します。

判定条件に合致している場合(チェックボックス列のヘッダをクリックした場合)、クリックしたのがチェックボックス列のヘッダだった場合はチェックボックス全てにチェックを付けています。

コードの流れ

STEP.1
dataGridViewのCellClickイベントを実行させる
dataGridViewのCellClickイベントを実行させます。
今回はセルがクリックされたときのイベントにCellClick(セルをクリックしたときに呼ばれるイベント)を選びましたが、似たようなイベントにCellContentClickイベント(セルに表示された値をクリックしたときに呼ばれるイベント)もあります。
STEP.2
クリックされたセルの行位置が「-1」でかつ列名がチェックボックスの列名かどうかを判定する
クリックされたセルの行位置が「-1」でかつ列名がチェックボックスの列名かどうかを判定します。
STEP.3
STEP.2の条件に該当する場合、dataGridViewのチェックボックスのValueプロパティにtrueを設定する
STEP.2の条件に該当する場合、dataGridViewのチェックボックスのValueプロパティにtrueを設定します。

dataGridViewの出力例

今回は次のdataGridViewを用意しました。

以上のdataGridViewにあるチェックボックス列のヘッダをクリックをすると、下のとおりにチェックボックスすべてにチェックが付きました。

フォームのコード

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1 && e.ColumnIndex == dataGridView1.Columns["チェック"].Index)
            {
                // クリックされたセルの行位置が「-1」でかつ列のヘッダが「チェック」の列の場合

                // datagridviewの行数分処理を繰り返すForeach文
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    // (「チェック」の列の)チェックボックスのチェックを付ける
                    row.Cells["チェック"].Value = true;
                }
            }
        }

注目すべきコード①

最初に見て頂きたいのは1行目です。

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

コードの説明

以上のコードは、dataGridViewのセルがクリックされた時に呼び出されるイベントプロシージャです。

dataGridViewクリックされると、CellClickイベントプロシージャが呼び出されます。

ただし、CellClickイベントプロシージャが呼び出されるには、以下のdataGridViewのプロパティ設定で、dataGridViewのイベント設定を行う必要があります。

注目すべきコード②

次に見て頂きたいのは3行目から13行目です。

            if (e.RowIndex == -1 && e.ColumnIndex == dataGridView1.Columns["チェック"].Index)
            {
                // クリックされたセルの行位置が「-1」でかつ列のヘッダが「チェック」の列の場合

                // datagridviewの行数分処理を繰り返すForeach文
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    // (「チェック」の列の)チェックボックスのチェックを付ける
                    row.Cells["チェック"].Value = true;
                }
            }

コードの説明

以上のコードは、クリックされたセルの行位置が「-1」でかつ列名がチェックボックスの列名かどうかを判定し、該当する場合はチェックボックスすべてにチェックを付ける処理のコードです。

コードの詳細

3行目のコードは、クリックされたセルの行位置が「-1」でかつ列名がチェックボックスの列名かどうかを判定するIF文のコードです。

「-1」のセルの行位置はヘッダの行なので、IFの条件に含めます。

また、今回はチェックボックスの列のヘッダの文言が「チェック」なので、「チェック」かどうかも判定に含めます。

以上の条件に該当する場合は11行目のコードでValueプロパティにtrueを設定します。

Valueプロパティにtrueを設定することでチェックボックスにチェックが付きます。

なお、チェックボックスの列は「チェック」の列なので、Cellsプロパティに「チェック」の文字列を指定しています。

必ず文字列を合わせて指定してください。

また、チェックボックスすべてにチェックを付けるので、8行目のforeachを使ってdataGridViewの行数分、11行目のチェックボックスにチェックを付ける処理を繰り返します。

動作確認

「dataGridViewの出力例」をご覧ください。

最後に

この記事では、dataGridViewに追加したチェックボックスの列のヘッダをクリックしたらすべてチェックする方法についてご説明しました。

dataGridViewに追加したチェックボックスの列のヘッダをクリックしたらすべてチェックしたいときは本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら