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

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

ちなみに、本記事とほぼ同じ内容で以下の記事を作成しています。

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

今回の記事と以上の記事の違いは次の通りです。

  1. 以前の記事:CellClickイベントプロシージャを呼び出す
  2. 今回の記事:ColumnHeaderMouseClickイベントプロシージャを呼び出す

CellClickイベントプロシージャは、dataGridViewのセルやヘッダがクリックされたら呼び出されるイベントプロシージャですが、ColumnHeaderMouseClickイベントプロシージャはdataGridViewのヘッダがクリックされた時に呼び出されるイベントプロシージャです。

今回はこのColumnHeaderMouseClickイベントプロシージャを使って本題に対するコードをご説明します。

【動画】dataGridViewに追加したチェックボックスの列のヘッダをクリックしたらすべてのチェックを外す実際の動き

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


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

チェックボックス列のヘッダをクリックした場合、チェックボックスが全て外れた状態になります。

コードの流れ

STEP.1
dataGridViewのColumnHeaderMouseClickイベントを実行させる
dataGridViewのColumnHeaderMouseClickイベントを実行させます。
ColumnHeaderMouseClickイベントは、dataGridViewのヘッダをクリックしたときに実行されます。
STEP.2
クリックされたヘッダがチェックボックス列のヘッダの場合はdataGridViewのチェックボックスのValueプロパティにfalseを設定する
クリックされたヘッダがチェックボックス列のヘッダの場合はdataGridViewのチェックボックスのValueプロパティにfalseを設定します。

dataGridViewの出力例

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

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

フォームのコード

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

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

注目すべきコード①

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

        private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

コードの説明

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

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

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

注目すべきコード②

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

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

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

コードの説明

以上のコードは、クリックされたセルがチェックボックスの列名かどうかを判定し、該当する場合はチェックボックスすべてのチェックを外す処理のコードです。

コードの詳細

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

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

Valueプロパティにfalseを設定することでチェックボックスのチェックが外れます。

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

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

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

動作確認

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

最後に

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

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

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

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

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

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