[C#][Windows Formsアプリ][RadioButton] GroupBoxを使用してRadioButtonを複数のグループに分ける方法

スポンサーリンク

はじめに

RadioButton コントロールは、複数の選択肢の中から一つだけを選択できる UI 要素です。RadioButton は、互いに排他的なグループとして機能し、一度に一つの RadioButton だけが選択状態になります。

RadioButtonのグループ化

フォームに配置されたRadioButton群は、すべて同一のグループに属していると認識されます。このため、フォーム上に配置されたRadioButtonにチェックできるのは、たった一つのRadioButtonに限定されてしまいます。

そこで、GroupBoxコントロールを使用すると、そのグループ内に配置されたRadioButtonは、同一のグループとして取り扱われるようになります。

例えば、下図のように「年齢」「性別」のように、GroupBoxでRadioButtonをグルーピングすれば、それぞれのGroupBox内でRadioButtonにチェックをつけることができるようになります。

デザイン例

デザイン例

コード例

以下は、先ほどのデザイン画面のコード例です。

btnGetData_Clickは、[取得]ボタンクリック時に発動するクリックイベントです。

groupBox1は年齢のグループボックス、groupBox2は性別のグループボックスです。

private void btnGetData_Click(object sender, EventArgs e)
{
    string? selectedOption1 = groupBox1.Controls.OfType().FirstOrDefault(r => r.Checked)?.Text;

    string? selectedOption2 = groupBox2.Controls.OfType().FirstOrDefault(r => r.Checked)?.Text;

    MessageBox.Show($"Group 1: {selectedOption1}\nGroup 2: {selectedOption2}");
}
  • groupBox1.Controls.OfType<RadioButton>():groupBox1内の全てのRadioButtonのコレクションを取得します。
  • FirstOrDefault(r => r.Checked):コレクションから、Checkedプロパティがtrue(選択されている)の最初のRadioButtonを探し、そのオブジェクトを取得します。
  • ?.Text:取得したRadioButtonオブジェクトがnullでない場合に限り、そのTextプロパティ(表示されているテキスト)を取得します。nullの場合はnullが返されます。
  • selectedOption1変数に、groupBox1内の選択されたRadioButtonのテキストが格納されます。同様に、selectedOption2変数にgroupBox2内の選択されたRadioButtonのテキストが格納されます。
  • MessageBox.Show():メッセージボックスを表示します。
  • $”Group 1: {selectedOption1}\nGroup 2: {selectedOption2}”:選択されたRadioButtonのテキストを文字列としてフォーマットし、メッセージボックスに表示します。\nは改行コードです。

実行例

実行例は以下の通りです。

実行例

実行例

 

まとめ

この記事で示したように、GroupBoxを使用することで、1つのフォーム上で複数のラジオボタングループを作成することができます。

Please follow and like us:

コメント

タイトルとURLをコピーしました