C# チェック項目の必須チェック

C#サンプルコードプログラミング

概要説明 

GroupBox又はPanel上のチェックボックス(又はラジオボタン)を必須チェックするサンプルです。

サンプルとして、isSelectedItemメソッドを作成しました。

引数で受け取るGroupBox又はPanel上のコントロールを見てチェックされているか判定します。

チェックされていなければErrorProviderに警告を通知します。

 

チェックの内容

必須チェック

何も選択されていなければ、警告を通知します。

No引数内容
1ErrorProviderErrorProvider警告時に通知するErrorProvider
2string項目名警告時に表示する項目名
3Controlコントロールチェック対象のGroupBox又はPanel
4bool必須区分true:必須 false:必須でない

サンプルの内容

① 好きな動物(GroupBox)の必須チェックをする

 GroupBox上のチェックボックスがチェックされていればTrueを返します。

 チェックされていなければ警告を通知します。

② 好きな果物(Panel)の必須チェックをする

 Panel上のラジオボタンがチェックされていればTrueを返します。

 チェックされていなければ警告を通知します。

 

使用部品

No項目名Textname部品
1誕生日(見出し)好きな動物groupBox1GroupBox
2好きな動物の選択項目checkBox1CheckBox
3好きな動物の選択項目checkBox2CheckBox
4好きな動物の選択項目checkBox3CheckBox
5好きな果物(見出し)好きな果物label1Label
6好きな果物(パネル)panel1Panel
7好きな果物の選択項目いちごradioButton1RadioButton
8好きな果物の選択項目メロンradioButton2RadioButton
9好きな果物の選択項目バナナradioButton3RadioButton
10チェックボタンチェックbutton1Button

プログラミング

言語: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;
        }
    }
}

実行結果

何もチェックしないで。チェックをクリックします。

好きな動物:何も選択していないので警告が通知されます。

好きな果物:こちらも何も選択していないので警告が通知されます。

猫といちごを選択し、チェックをクリックします。

選択されているので警告が通知されなくなります。

以上です。

コメント

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