0

CSharp クラスをフォーム プロジェクトに追加しました。ここで、クラスからフォーム コントロールにアクセスしたいと考えています。

次のように、暗黙の var を使用してこのコードを使用しています。

var form = frmClasses.ActiveForm as frmClasses;

このコードを使用して、フォーム Modifiers を public に設定し、コードをメソッド/関数に配置して、クラスのフォーム コントロールにアクセスできるようにします。

問題は、フォーム コントロールを呼び出す必要があるたびに、var と上記のコード行全体を使用する必要があることです。冗長性の少ない簡単な方法はありますか? 例: クラス内の各メソッド/関数はフォーム コントロールを呼び出す必要があるため、Var を使用してフォーム コントロールを参照します。

以下のコードを見ると、Var を使用して各フォーム コントロールを呼び出していることがわかります。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Classes
{
    class ClsProperties
    {   
        //VALIDATE TEXTBOX
        public static void validateTextBox()
        {
            var form = frmClasses.ActiveForm as frmClasses;
            if (form.txtMyTextBox.Text.Trim().Length == 0)
            {
                form.txtMyTextBox.BackColor = Color.Aquamarine;
            }

        }

        //VALIDATE RADIO BUTTON
        public static void validateRadio()
        {   
            var form = frmClasses.ActiveForm as frmClasses;
            if (form.radBtnColor.Checked == false)
            {
                form.lblShowError.ForeColor = Color.Aquamarine;
            }

        }
    }
}

フォームコード:

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

namespace Classes
{
    public partial class frmClasses : Form
    {
        public frmClasses()
        {
            InitializeComponent();
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            ClsProperties.validateRadio();
            ClsProperties.validateTextBox();
        }
    }
}

すべての検証を 1 つのメソッドに入れることもできますが、クラスを使用して複数のメソッドを呼び出す方法を示したいだけです。

クラス内のフォーム要素にアクセスするより良い方法はありますか?

メルシー

4

0 に答える 0