【C#】datagridviewのチェックボックスに何件チェックが付いているかをカウントするには

この記事では、datagridviewのチェックボックスに何件チェックが付いているかをカウントする方法についてご説明します。

【動画】datagridviewのチェックボックスに何件チェックが付いているかをカウントする実際の動き

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


datagridviewのチェックボックスのチェック状態を判定し、判定に該当する場合はカウンタの値を1つプラスします。

全てのdatagridviewのチェックボックスのチェック状態を判定終わったら、カウンタの値をテキストボックスに表示させています。

コードの流れ

STEP.1
datagridviewのチェックボックスのチェック状態を判定する
datagridviewのチェックボックスのチェック状態を判定します。
STEP.2
STEP.1の判定に該当する場合はカウンタの値を1つプラスする
STEP.1の判定に該当する場合はカウンタの値を1つプラスします。
STEP.1とSTEP.2をdatagridviewの行数分繰り返します。
datagridviewの行数分処理を繰り返したら、今回はカウンタの値をテキストボックスに出力しています。

dataGridViewの出力例

今回は次のdataGridViewの表示を元に解説します。

「勤務形態」の列にチェックボックスの列が表示されていますが、このチェックボックスにチェックが付いている数をカウントしてテキストボックスにその数を表示させます。

カウントして数を表示させた結果は下の画像の通りです。

チェックが6つ付いているので、テキストボックスには6の値が出力されています。(今回は「button2」をクリックして処理を実行)

C#のコード(例)

        private void button2_Click(object sender, EventArgs e)
        {
            // カウンタ変数を初期化する
            int cnt = 0;

            // datagridviewの行数分処理を繰り返すForeach文
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                // チェックボックスの状態(チェックの有無)を取得し、chkに格納する
                DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["勤務状態"];

                if (chk.Value != DBNull.Value && Convert.ToBoolean(chk.Value))
                {
                    // chk(チェックボックスのセル)の値がDBNull.Valueでないこと、かつチェックボックスにチェックが付いている場合

                    // カウンタをインクリメントする
                    cnt++;
                }
            }

            // チェックボックスにチェックが付いている総数をテキストボックスに出力する
            txb_chkCnt.Text = cnt.ToString();
        }

注目すべきコード①

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

            // datagridviewの行数分処理を繰り返すForeach文
            foreach (DataGridViewRow row in dataGridView1.Rows)

コードの説明

以上のコードは、datagridviewの行数分処理を繰り返すForeach文です。

datagridviewのチェックボックスのチェック有無をすべて確認するために、datagridviewの行数分処理を繰り返します。

注目すべきコード②

次に見て頂きたいのは10行目です。

                // チェックボックスの状態(チェックの有無)を取得し、chkに格納する
                DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["勤務状態"];

コードの説明

以上のコードは、チェックボックスの状態(チェックの有無)を取得し、chkに格納するコードです。

チェックが付いているか付いていないかの状態をこのコードで取得することができます。

注目すべきコード③

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

                if (chk.Value != DBNull.Value && Convert.ToBoolean(chk.Value))
                {
                    // chk(チェックボックスのセル)の値がDBNull.Valueでないこと、かつチェックボックスにチェックが付いている場合

                    // カウンタをインクリメントする
                    cnt++;
                }

コードの説明

以上のコードは、chk(チェックボックスのセル)の値がDBNull.Valueでないこと、かつチェックボックスにチェックが付いているかを判定し、その条件に合致すればカウンタをインクリメントする処理のコードです。

chk(チェックボックスのセル)の値がDBNull.Valueの場合はエラーになるので条件に入れておきます。

条件に合致すれば変数cntのカウンタをインクリメントします。

注目すべきコード④

次に見て頂きたいのは22行目です。

            // チェックボックスにチェックが付いている総数をテキストボックスに出力する
            txb_chkCnt.Text = cnt.ToString();

以上のコードは、チェックボックスにチェックが付いている数をテキストボックスに出力しているコードです。

今回チェックボックスにチェックが付いている数を確認するのにテキストボックスを利用しています。

動作確認

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

最後に

この記事では、datagridviewのチェックボックスに何件チェックが付いているかをカウントする方法についてご説明しました。

datagridviewのチェックボックスに何件チェックが付いているか確認したいときは本記事を参考にしてみてくださいね。

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

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

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

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