GroupBox又はPanel上のチェックボックス(又はラジオボタン)を必須チェックするサンプルです。
サンプルとして、isSelectedItemメソッドを作成しました。
引数で受け取るGroupBox又はPanel上のコントロールを見てチェックされているか判定します。
チェックされていなければErrorProviderに警告を通知します。
チェックの内容
必須チェック
何も選択されていなければ、警告を通知します。
No | 型 | 引数 | 内容 |
1 | ErrorProvider | ErrorProvider | 警告時に通知するErrorProvider |
2 | string | 項目名 | 警告時に表示する項目名 |
3 | Control | コントロール | チェック対象のGroupBox又はPanel |
4 | bool | 必須区分 | true:必須 false:必須でない |
サンプルの内容
① 好きな動物(GroupBox)の必須チェックをする
GroupBox上のチェックボックスがチェックされていればTrueを返します。
チェックされていなければ警告を通知します。
② 好きな果物(Panel)の必須チェックをする
Panel上のラジオボタンがチェックされていればTrueを返します。
チェックされていなければ警告を通知します。
使用部品
No | 項目名 | Text | name | 部品 |
1 | 誕生日(見出し) | 好きな動物 | groupBox1 | GroupBox |
2 | 好きな動物の選択項目 | 犬 | checkBox1 | CheckBox |
3 | 好きな動物の選択項目 | 猫 | checkBox2 | CheckBox |
4 | 好きな動物の選択項目 | 鳥 | checkBox3 | CheckBox |
5 | 好きな果物(見出し) | 好きな果物 | label1 | Label |
6 | 好きな果物(パネル) | - | panel1 | Panel |
7 | 好きな果物の選択項目 | いちご | radioButton1 | RadioButton |
8 | 好きな果物の選択項目 | メロン | radioButton2 | RadioButton |
9 | 好きな果物の選択項目 | バナナ | radioButton3 | RadioButton |
10 | チェックボタン | チェック | button1 | Button |
プログラミング
言語:C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
namespace WindowsFormsApp24
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// ErrorProviderのインスタンス生成
ErrorProvider ep = new ErrorProvider();
/// <summary>
/// 画面起動時処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
// ErrorProviderのアイコンを点滅なしに設定する
ep.BlinkStyle = ErrorBlinkStyle.NeverBlink;
}
/// <summary>
/// チェックボタンクリック処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
// ErrorProviderをクリアします。
ep.Clear();
isSelectedItem(ep, "好きな動物", groupBox1, true);
isSelectedItem(ep, "好きな果物", panel1, true);
}
/// <summary>
/// チェック項目の必須チェック
/// </summary>
/// <param name="ep">ErrorProvider</param>
/// <param name="itemName">項目名</param>
/// <param name="c">TextBox</param>
/// <param name="required">必須区分(true:必須 false:必須でない)</param>
/// <returns>結果</returns>
static bool isSelectedItem(ErrorProvider ep, string itemName, Control control, bool required)
{
string msg = "";
// 必須区分がfalseなら何もせずTrueを返す
if (!required)
{
// CHECK OK
return true;
}
// groupBox、panel内のコントロール分ループする
foreach (Control c in control.Controls)
{
if (c.GetType().Equals(typeof(CheckBox)))
{
// チェックボックスの場合
CheckBox obj = c as CheckBox;
if (obj.Checked) {
// チェックされているので、CHECK OK
return true;
}
}
else if (c.GetType().Equals(typeof(RadioButton))) {
// ラジオボタンのの場合
RadioButton obj = c as RadioButton;
if (obj.Checked)
{
// チェックされているので、CHECK OK
return true;
}
}
}
// ここまで来たらチェックされていないので警告を通知する
msg = $"{itemName} は、必須項目です。何れかを選択して下さい。";
ep.SetError(control, msg);
// CHECK NG
return false;
}
}
}
実行結果
何もチェックしないで。チェックをクリックします。
好きな動物:何も選択していないので警告が通知されます。
好きな果物:こちらも何も選択していないので警告が通知されます。
猫といちごを選択し、チェックをクリックします。
選択されているので警告が通知されなくなります。
以上です。