C#のチェックボックス完全ガイド|状態取得・イベント処理・初期値設定まで初心者向けに解説
はじめに
C#でデスクトップアプリやWebアプリを開発するとき、ユーザーに複数の選択肢から任意の項目を選んでもらうために使われるのがチェックボックスです。
たとえば、次のような場面で利用されます。
利用規約への同意を確認する
通知を受け取るか選択する
複数の機能を有効化する
検索条件を複数指定する
C#のチェックボックスは、Checkedプロパティを確認することで、チェックされているかどうかを簡単に取得できます。また、イベント処理を設定すれば、チェック状態が変化したタイミングで任意の処理を実行することも可能です。
この記事では、C#のチェックボックスの基本から、Windows Formsでの配置方法、状態の取得・変更、初期値の設定まで、初心者にも分かりやすく解説します。
1. C#のチェックボックスとは?基本的な役割と使い方
チェックボックスとは、ユーザーが項目を選択したり、選択を解除したりするための入力コントロールです。
一般的には、四角形のボックスと説明文が表示され、クリックするたびにチェック状態が切り替わります。
Windows Formsでは、チェックボックスを表すためにCheckBoxクラスを使用します。
CheckBox checkBox1 = new CheckBox();チェックボックスが選択されているかどうかは、Checkedプロパティで確認できます。
bool isChecked = checkBox1.Checked;Checkedプロパティはbool型であり、チェックされている場合はtrue、チェックされていない場合はfalseを返します。
1-1. チェックボックスでできること
C#のチェックボックスでは、主に次のような操作ができます。
チェック状態を取得する
コードからチェック状態を変更する
初期状態を設定する
状態が変わったときに処理を実行する
ユーザーによる操作を無効化する
3つの状態を持つチェックボックスを作成する
たとえば、「メール通知を受け取る」という設定をチェックボックスで受け付ける場合は、次のように判定できます。
if (checkBoxMail.Checked){MessageBox.Show("メール通知を有効にしました。");}else{MessageBox.Show("メール通知を無効にしました。");}チェックボックスは、それぞれの項目を独立して選択できる点が特徴です。
「メール通知」と「アプリ内通知」という2つのチェックボックスがある場合、ユーザーは両方を選ぶことも、どちらも選ばないこともできます。
1-2. ラジオボタンやトグルボタンとの違い
チェックボックスと似たコントロールに、ラジオボタンやトグルボタンがあります。ただし、それぞれ用途が異なります。
チェックボックスは、複数の項目を個別に選択できるコントロールです。ユーザーは、必要な項目をいくつでもチェックできます。
一方、ラジオボタンは、複数の選択肢から原則として1つだけ選ぶ場合に使用します。
たとえば、支払い方法を選択する画面では、次のようなラジオボタンが適しています。
クレジットカード
銀行振込
代金引換
これに対して、興味のあるジャンルを選択する画面では、複数選択できるチェックボックスが適しています。
トグルボタンは、オンとオフを切り替えるためのコントロールです。機能的にはチェックボックスと似ていますが、設定画面などで現在のオン・オフ状態を視覚的に分かりやすく表示したい場合によく使われます。
使い分けの目安は次のとおりです。
| コントロール | 主な用途 |
|---|---|
| チェックボックス | 複数の項目を個別に選択する |
| ラジオボタン | 複数の候補から1つだけ選択する |
| トグルボタン | 機能のオン・オフを切り替える |
1-3. Windows Forms・WPF・ASP.NETでの実装方法の違い
C#では、使用するアプリケーションフレームワークによってチェックボックスの実装方法が異なります。
Windows Formsでは、System.Windows.Forms.CheckBoxクラスを使用します。
CheckBox checkBox1 = new CheckBox();checkBox1.Text = "通知を受け取る";checkBox1.Checked = true;Windows Formsは、フォームデザイナーを使って直感的に画面を作成できるため、C#初心者にも扱いやすいフレームワークです。
WPFでは、XAMLを使ってチェックボックスを配置するのが一般的です。
<CheckBoxx:Name="checkBoxNotice"Content="通知を受け取る"IsChecked="True" />WPFでは、チェック状態を表すプロパティとしてCheckedではなくIsCheckedを使用します。
コードから状態を確認する場合は、次のように記述します。
if (checkBoxNotice.IsChecked == true){MessageBox.Show("チェックされています。");}ASP.NET CoreのRazor PagesやMVCでは、HTMLのinput要素やタグヘルパーを使用します。
<input asp-for="ReceiveNotice" type="checkbox" /><label asp-for="ReceiveNotice">通知を受け取る</label>モデル側にはbool型のプロパティを用意します。
public bool ReceiveNotice { get; set; }それぞれの主な違いは次のとおりです。
| フレームワーク | 主な記述方法 | 状態を表すプロパティ |
| Windows Forms | デザイナーまたはC#コード | Checked |
| WPF | XAMLまたはC#コード | IsChecked |
| ASP.NET | HTML、Razor、タグヘルパー | モデルのboolプロパティ |
この記事では、特にWindows FormsのCheckBoxコントロールを中心に解説します。
2. Windows Formsでチェックボックスを配置する方法
Windows Formsでチェックボックスを配置する方法は、大きく分けて2つあります。
1つ目は、Visual Studioのデザイナーから配置する方法です。2つ目は、C#のコードから動的に生成する方法です。
通常の固定された画面ではデザイナーを使用し、条件に応じて表示する項目数が変わる場合は、コードから動的に生成すると便利です。
2-1. デザイナーからCheckBoxコントロールを追加する
Visual Studioのフォームデザイナーからチェックボックスを追加する手順は次のとおりです。
Windows Formsプロジェクトを開く
対象のフォームをデザイナーで表示する
ツールボックスを開く
「CheckBox」を選択する
フォーム上の任意の位置へドラッグ&ドロップする
チェックボックスを追加すると、通常はcheckBox1という名前が自動的に設定されます。
配置したチェックボックスを選択し、プロパティウィンドウから表示文字や名前を変更できます。
たとえば、次のように設定します。
(Name): checkBoxNoticeText: 通知を受け取るChecked: TrueCheckedをTrueに設定すると、フォームを開いた時点でチェックされた状態になります。
デザイナーで設定した内容は、フォームの.Designer.csファイルに自動生成されます。通常は、このファイルを手動で編集する必要はありません。
2-2. コードからCheckBoxを動的に生成する
チェックボックスは、C#のコードから動的に作成することもできます。
private void Form1_Load(object sender, EventArgs e){CheckBox checkBox = new CheckBox();checkBox.Name = "checkBoxNotice";checkBox.Text = "通知を受け取る";checkBox.AutoSize = true;checkBox.Location = new Point(20, 20);Controls.Add(checkBox);
}
このコードでは、次の処理を行っています。
CheckBoxクラスのインスタンスを生成する名前や表示文字を設定する
フォーム上の位置を指定する
Controls.Addでフォームに追加する
CheckBoxオブジェクトを作成しただけでは画面に表示されません。必ずフォームやパネルなどのControlsコレクションへ追加する必要があります。
複数のチェックボックスを動的に作成する場合は、繰り返し処理を使うと効率的です。
private void CreateCheckBoxes(){string[] items ={"メール通知","アプリ内通知","SMS通知"};for (int i = 0; i < items.Length; i++){CheckBox checkBox = new CheckBox();checkBox.Name = $"checkBox{i}";checkBox.Text = items<span data-placeholder-token="true" class="text-token-text-primary cursor-text rounded-sm" style="background-color: color-mix(in srgb, var(--theme-user-selection-bg, var(--selection)) 30%, transparent); padding-top: 4px; padding-bottom: 4px;">[i]</span>;checkBox.AutoSize = true;checkBox.Location = new Point(20, 20 + i * 30);Controls.Add(checkBox);}
}
商品一覧や検索条件など、データの件数に応じて選択肢を増減させたい場合に適した方法です。
2-3. Text・Name・AutoSizeなどの基本プロパティを設定する
Windows Formsのチェックボックスには、表示や動作を制御するためのさまざまなプロパティがあります。
特によく使う基本プロパティは次のとおりです。
| プロパティ | 内容 |
Name | コードから参照するときの名前 |
Text | チェックボックスの横に表示する文字 |
Checked | チェック状態 |
AutoSize | 文字列に合わせてサイズを自動調整するか |
Enabled | ユーザーが操作できるか |
Visible | 画面に表示するか |
Location | フォーム上の表示位置 |
Size | コントロールの大きさ |
TabIndex | Tabキーで移動するときの順番 |
コードから設定する場合は、次のように記述します。
checkBoxNotice.Name = "checkBoxNotice";checkBoxNotice.Text = "お知らせを受け取る";checkBoxNotice.AutoSize = true;checkBoxNotice.Checked = false;checkBoxNotice.Enabled = true;checkBoxNotice.Visible = true;Nameには、役割が分かる名前を設定しましょう。checkBox1のままでも動作しますが、チェックボックスが増えると管理しにくくなります。
たとえば、次のような命名にすると用途を判断しやすくなります。
checkBoxAgreecheckBoxReceiveMailcheckBoxRememberLoginTextは、画面上でユーザーに表示される説明文です。
checkBoxAgree.Text = "利用規約に同意する";AutoSizeをtrueにすると、Textの長さに合わせてコントロールのサイズが自動調整されます。
checkBoxAgree.AutoSize = true;表示文字が途中で切れてしまう場合は、AutoSizeがtrueになっているか確認してください。
初期値をチェック済みにするには、Checkedへtrueを設定します。
checkBoxAgree.Checked = true;未チェックを初期値にする場合は、falseを設定します。
checkBoxAgree.Checked = false;2-4. チェックボックスを有効化・無効化する
ユーザーにチェックボックスを操作させたくない場合は、Enabledプロパティをfalseにします。
checkBoxOption.Enabled = false;無効化されたチェックボックスは通常、グレーで表示され、クリックできなくなります。
再び操作できる状態に戻す場合は、trueを設定します。
checkBoxOption.Enabled = true;ほかの入力内容に応じて、有効・無効を切り替えることもできます。
たとえば、「詳細設定を使用する」がチェックされた場合だけ、関連するチェックボックスを操作可能にするコードは次のとおりです。
private void checkBoxDetail_CheckedChanged(object sender,EventArgs e){checkBoxOption.Enabled = checkBoxDetail.Checked;}フォームの読み込み時にも同じ条件を設定しておくと、初期表示とイベント発生後の状態を一致させられます。
private void Form1_Load(object sender, EventArgs e){checkBoxOption.Enabled = checkBoxDetail.Checked;}チェックボックスを非表示にしたい場合は、EnabledではなくVisibleを使用します。
checkBoxOption.Visible = false;Enabled = falseでは画面に表示されたまま操作できなくなり、Visible = falseではコントロール自体が表示されなくなります。
3. C#でチェックボックスの状態を取得・変更する方法
C#でチェックボックスを扱ううえで、最も基本となるのがチェック状態の取得と変更です。
Windows Formsでは、Checkedプロパティを使用します。
bool currentState = checkBox1.Checked;Checkedの値を読み取れば現在の状態を取得でき、値を代入すれば状態を変更できます。
3-1. Checkedプロパティでチェック状態を取得する
チェックボックスの状態は、Checkedプロパティからbool型の値として取得できます。
bool isChecked = checkBoxAgree.Checked;チェックされている場合はtrue、チェックされていない場合はfalseが代入されます。
ボタンがクリックされたときに状態を取得する例は次のとおりです。
private void buttonConfirm_Click(object sender,EventArgs e){bool isChecked = checkBoxAgree.Checked;MessageBox.Show($"チェック状態: {isChecked}");
}
チェック状態が変わった瞬間に処理を実行したい場合は、CheckedChangedイベントを使用します。
private void checkBoxAgree_CheckedChanged(object sender,EventArgs e){if (checkBoxAgree.Checked){labelStatus.Text = "同意済み";}else{labelStatus.Text = "未同意";}}デザイナーからイベントを設定する場合は、チェックボックスを選択し、プロパティウィンドウのイベント一覧からCheckedChangedをダブルクリックします。
コードからイベントを登録することもできます。
checkBoxAgree.CheckedChanged += CheckBoxAgree_CheckedChanged;イベントハンドラーは次のように定義します。
private void CheckBoxAgree_CheckedChanged(object? sender,EventArgs e){MessageBox.Show("チェック状態が変更されました。");}なお、Checkedへコードから値を代入した場合も、値が実際に変化すればCheckedChangedイベントが発生します。
3-2. if文でチェックの有無を判定する
チェック状態に応じて処理を分岐する場合は、if文を使用します。
if (checkBoxAgree.Checked){MessageBox.Show("チェックされています。");}else{MessageBox.Show("チェックされていません。");}Checkedはbool型なので、次のように== trueを書く必要はありません。
if (checkBoxAgree.Checked == true){// チェックされている場合の処理}この書き方でも正しく動作しますが、一般的には次のように簡潔に記述します。
if (checkBoxAgree.Checked){// チェックされている場合の処理}未チェックであることを判定したい場合は、先頭に!を付けます。
if (!checkBoxAgree.Checked){MessageBox.Show("チェックを入れてください。");}利用規約への同意を必須にする場合は、次のように入力チェックを実装できます。
private void buttonRegister_Click(object sender,EventArgs e){if (!checkBoxAgree.Checked){MessageBox.Show("利用規約への同意が必要です。","入力エラー",MessageBoxButtons.OK,MessageBoxIcon.Warning); return;}MessageBox.Show("登録処理を実行します。");
}
複数のチェックボックスがすべて選択されているか確認する場合は、&&演算子を使います。
if (checkBoxOption1.Checked &&checkBoxOption2.Checked){MessageBox.Show("両方チェックされています。");}いずれか1つが選択されているか確認する場合は、||演算子を使います。
if (checkBoxOption1.Checked ||checkBoxOption2.Checked){MessageBox.Show("少なくとも1つ選択されています。");}複数のチェックボックスから、選択された項目を一覧として取得することもできます。
private void buttonConfirm_Click(object sender,EventArgs e){List<string> selectedItems = new List<string>();if (checkBoxMail.Checked){selectedItems.Add(checkBoxMail.Text);}if (checkBoxApp.Checked){selectedItems.Add(checkBoxApp.Text);}if (checkBoxSms.Checked){selectedItems.Add(checkBoxSms.Text);}if (selectedItems.Count == 0){MessageBox.Show("項目が選択されていません。");return;}MessageBox.Show("選択項目: " + string.Join("、", selectedItems));
}
チェックボックスが多い場合は、フォーム内のコントロールをまとめて取得する方法もあります。
List<string> selectedItems = Controls.OfType<CheckBox>().Where(checkBox => checkBox.Checked).Select(checkBox => checkBox.Text).ToList();ただし、パネルやグループボックスの中に配置されているチェックボックスは、フォーム直下のControlsだけでは取得できません。その場合は、対象のコンテナから取得します。
List<string> selectedItems = panelOptions.Controls.OfType<CheckBox>().Where(checkBox => checkBox.Checked).Select(checkBox => checkBox.Text).ToList();3-3. Checkedプロパティでチェック状態を変更する
チェックボックスの状態をコードから変更する場合も、Checkedプロパティを使用します。
チェックを付ける場合はtrueを代入します。
checkBoxAgree.Checked = true;チェックを外す場合はfalseを代入します。
checkBoxAgree.Checked = false;フォームの初期表示でチェック済みにしたい場合は、コンストラクターやLoadイベントで設定できます。
public Form1(){InitializeComponent();checkBoxNotice.Checked = true;
}
Loadイベントで設定する場合は、次のように記述します。
private void Form1_Load(object sender, EventArgs e){checkBoxNotice.Checked = true;}複数のチェックボックスを一括でチェックする場合は、繰り返し処理を利用できます。
private void CheckAll(){foreach (CheckBox checkBoxin panelOptions.Controls.OfType<CheckBox>()){checkBox.Checked = true;}}すべてのチェックを外す場合は、falseを代入します。
private void UncheckAll(){foreach (CheckBox checkBoxin panelOptions.Controls.OfType<CheckBox>()){checkBox.Checked = false;}}現在の状態を反転させる場合は、次のように記述します。
checkBoxNotice.Checked = !checkBoxNotice.Checked;チェックされていれば未チェックに、未チェックであればチェック済みに切り替わります。
3つの状態を扱いたい場合は、ThreeStateプロパティを使用します。
checkBoxOption.ThreeState = true;3状態のチェックボックスでは、CheckStateプロパティから状態を取得できます。
switch (checkBoxOption.CheckState){case CheckState.Checked:MessageBox.Show("チェック済みです。");break;case CheckState.Unchecked:MessageBox.Show("未チェックです。");break;case CheckState.Indeterminate:MessageBox.Show("未確定状態です。");break;
}
3つの状態は次の意味を持ちます。
| 値 | 状態 |
CheckState.Checked | チェック済み |
CheckState.Unchecked | 未チェック |
CheckState.Indeterminate | 未確定・一部選択 |
Indeterminateは、子項目の一部だけが選択されていることを表す場合などに利用されます。
通常のオン・オフだけを扱うのであれば、ThreeStateを使用せず、Checkedプロパティだけで十分です。
まとめ
C#のチェックボックスは、ユーザーに複数の項目を選択してもらう場合や、設定のオン・オフを指定してもらう場合に使用するコントロールです。
Windows FormsではCheckBoxクラスを使用し、チェック状態はCheckedプロパティから取得できます。
if (checkBox1.Checked){// チェックされている場合の処理}コードから状態を変更する場合は、trueまたはfalseを代入します。
checkBox1.Checked = true;チェック状態が変化したタイミングで処理を実行する場合は、CheckedChangedイベントを使用します。
また、操作を禁止する場合はEnabled、表示そのものを切り替える場合はVisibleを設定します。
C#でチェックボックスを実装するときは、まず次の基本項目を押さえておきましょう。
状態の取得には
Checkedを使用する状態の判定には
if文を使用する初期値や状態の変更も
Checkedで設定する状態の変化は
CheckedChangedイベントで検知する操作の有効・無効は
Enabledで切り替える複数項目から1つだけ選ぶ場合はラジオボタンを使用する
これらを理解すれば、利用規約への同意確認、通知設定、検索条件の選択など、さまざまな画面でC#のチェックボックスを活用できます。

