DataGridViewで選択した行のチェックボックスをまとめてオン、オフにする

Visual C# 2005 Express Editionを使う。

サンプルアプリケーションの概要

Berryz工房のメンバー一覧を表示して出席者を選択します。

型指定されたデータセットを作成する

  1. ソリューションエクスプローラーでプロジェクトを右クリックする
  2. [追加 | 新しい項目]を選択する
  3. データセットのファイル名を「MemberDataSet」として追加する

    データセットが追加されたソリューションエクスプローラー

  4. データセットデザイナで右クリックする
  5. [追加 | DataTable]を選択する

    データテーブルを追加するコンテキストメニュー

  6. データテーブルの名前を「MemberTable」に変更する

    名前を変更したデータテーブル

  7. データテーブルを右クリックする
  8. [追加 | 列]を選択する

    列を追加するコンテキストメニュー

  9. 列を追加する

    列を追加したデータテーブル

画面をデザインする

  1. [ツールボックス | データ]からDataGridViewを貼り付ける

    ツールボックスからDataGridViewの貼り付け

  2. [ツールボックス | コモンコントロール]からButtonを貼り付ける
  3. [ツールボックス | データ]からDataSetを貼り付ける

    ツールボックスからDataSetの貼り付け

  4. DataGridViewのプロパティウインドウでDataSourceに先ほど貼り付けたMemberDataSetを設定する

    DataSourceの指定

  5. DataGridViewのプロパティウインドウでDataMemberにMemberDataSetのMemberTableを設定する

    DataMemberの指定

  6. DataGridViewのプロパティウインドウでColumnsのコレクションを編集する

    列の編集

  7. 完成

    完成した画面のデザイン

型指定されたデータセットをBerryz工房のメンバーで初期化する

        private void InitializeDataSet()
        {
            MemberDataSet.MemberTableRow row = null;
            string dateFormat = "yyyy/MM/dd";

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "清水佐紀";
            row.Kana = "しみずさき";
            row.Birthday = DateTime.ParseExact("1991/11/22", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "嗣永桃子";
            row.Kana = "つぐながももこ";
            row.Birthday = DateTime.ParseExact("1992/03/06", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "夏焼雅";
            row.Kana = "なつやきみやび";
            row.Birthday = DateTime.ParseExact("1992/08/25", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "須藤茉麻";
            row.Kana = "すどうまあさ";
            row.Birthday = DateTime.ParseExact("1992/07/03", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "熊井友理奈";
            row.Kana = "くまいゆりな";
            row.Birthday = DateTime.ParseExact("1993/08/03", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "徳永千奈美";
            row.Kana = "とくながちなみ";
            row.Birthday = DateTime.ParseExact("1992/05/22", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "菅谷梨沙子";
            row.Kana = "すがやりさこ";
            row.Birthday = DateTime.ParseExact("1994/04/04", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);
        }
    

選択ボタン押下で出席欄にチェックをつける

AttendanceColumnはForm1.Designer.csに定義されているDataGridViewCheckBoxColumnのインスタンス。

        private void rowSelectButton_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow selectedRow in BerryzDataGridView.SelectedRows)
            {
                selectedRow.Cells[AttendanceColumn.Name].Value = true;
            }
        }
    

解除ボタン押下で出席欄のチェックをはずす

        private void rowCancelButton_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow selectedRow in BerryzDataGridView.SelectedRows)
            {
                selectedRow.Cells[AttendanceColumn.Name].Value = false;
            }
        }
    

完全なソースコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DataGridViewSelection
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeDataSet();
        }

        private void InitializeDataSet()
        {
            MemberDataSet.MemberTableRow row = null;
            string dateFormat = "yyyy/MM/dd";

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "清水佐紀";
            row.Kana = "しみずさき";
            row.Birthday = DateTime.ParseExact("1991/11/22", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "嗣永桃子";
            row.Kana = "つぐながももこ";
            row.Birthday = DateTime.ParseExact("1992/03/06", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "夏焼雅";
            row.Kana = "なつやきみやび";
            row.Birthday = DateTime.ParseExact("1992/08/25", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "須藤茉麻";
            row.Kana = "すどうまあさ";
            row.Birthday = DateTime.ParseExact("1992/07/03", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "熊井友理奈";
            row.Kana = "くまいゆりな";
            row.Birthday = DateTime.ParseExact("1993/08/03", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "徳永千奈美";
            row.Kana = "とくながちなみ";
            row.Birthday = DateTime.ParseExact("1992/05/22", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);

            row = memberDataSet.MemberTable.NewMemberTableRow();
            row.Attendance = false;
            row.Kanji = "菅谷梨沙子";
            row.Kana = "すがやりさこ";
            row.Birthday = DateTime.ParseExact("1994/04/04", dateFormat, null);
            memberDataSet.MemberTable.AddMemberTableRow(row);
        }

        private void rowSelectButton_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow selectedRow in BerryzDataGridView.SelectedRows)
            {
                selectedRow.Cells[AttendanceColumn.Name].Value = true;
            }
        }

        private void rowCancelButton_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow selectedRow in BerryzDataGridView.SelectedRows)
            {
                selectedRow.Cells[AttendanceColumn.Name].Value = false;
            }
        }
    }
}
    

スクリーンショット

アプリケーションのスクリーンショット

関連情報

Copyright © 2006, AfternoonTea
All rights reserved.