【C#】datagridviewに追加したチェックボックス列のヘッダのクリックを有効にするには

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

【動画】datagridviewに追加したチェックボックス列のヘッダのクリックを有効にする実際の動き

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


追加したdatagridviewに追加したチェックボックス列のヘッダはクリックしても反応しない

追加したdatagridviewに追加したチェックボックス列のヘッダはクリックしても反応しません。

今回は、datagridviewに追加したチェックボックス列のヘッダをクリックしたときに反応させるようコード上で対応します。

チェックボックス列を追加したdataGridViewの例

今回は以下のチェックボックス列を追加したdataGridViewを用意しました。

チェックボックスのヘッダをクリックしても何も反応しません。

では、チェックボックスのヘッダをクリックして反応させるにはどうすれば良いのかというと、dataGridViewのCellClickイベントプロシージャやCellContentClickイベントプロシージャといった「dataGridViewをクリックしたら呼ばれるイベントプロシージャ」を実装することです。

今回はCellClickイベントプロシージャを実装しています。

CellClickイベントプロシージャを実装してチェックボックスのヘッダをクリックしたときの動作結果は下のとおりです。

チェックボックスのヘッダをクリックすると、ヘッダ名の文字列をメッセージボックスに出力させています。

コードの流れ

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

フォームのコード

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {

            if (e.RowIndex == -1 && e.ColumnIndex == dataGridView1.Columns["チェック"].Index)
            {

                // クリックされたセルの行位置が「-1」でかつ列のヘッダが「チェック」の列の場合

                // クリックされた列のヘッダ名を取得する
                string headerName = dataGridView1.Columns[e.ColumnIndex].HeaderText;

                // ヘッダ名を表示する
                MessageBox.Show(headerName);
            }
        }

注目すべきコード①

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

        void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

コードの説明

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

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

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

注目すべきコード②

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

            if (e.RowIndex == -1 && e.ColumnIndex == dataGridView1.Columns["チェック"].Index)
            {

                // クリックされたセルの行位置が「-1」でかつ列のヘッダが「チェック」の列の場合

                // クリックされた列のヘッダ名を取得する
                string headerName = dataGridView1.Columns[e.ColumnIndex].HeaderText;

                // ヘッダ名を表示する
                MessageBox.Show(headerName);
            }

コードの説明

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

コードの詳細

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

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

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

以上の条件に該当する場合は10行目のコードでクリックされた列のヘッダ名を取得し、そのヘッダ名を13行目で出力されるメッセージボックスの文言表示に設定します。

動作確認

「チェックボックス列を追加したdataGridViewの例」をご覧ください。

最後に

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

datagridviewに追加したチェックボックス列のヘッダをクリックしたときに、なぜ反応しないんだろう?と悩んだり、何かしら処理を行いたい場合は本記事を参考にしてみてくださいね。

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

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

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

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