8

10 個のテキスト ボックスがありますが、ボタンをクリックしたときに空でないことを確認したいと思います。私のコードは次のとおりです。

 if (TextBox1.Text == "")
 {
    errorProvider1.SetError(TextBox1, "Please fill the required field");
 }

個人ごとに書くのではなく、一度にすべてのテキストボックスをチェックできる方法はありますか?

4

3 に答える 3

24

はいあります。

まず、すべてのテキスト ボックスを一連の形式で取得する必要があります。たとえば、次のようになります。

var boxes = Controls.OfType<TextBox>(); 

次に、それらを繰り返し処理し、それに応じてエラーを設定できます。

foreach (var box in boxes)
{
    if (string.IsNullOrWhiteSpace(box.Text))
    {
        errorProvider1.SetError(box, "Please fill the required field");
    }
}

または +string.IsNullOrWhiteSpaceの代わりに使用して、スペースやタブなどで満たされたテキスト ボックスにエラーをマークすることをお勧めします。x == ""string.IsNullOrEmpty

于 2012-08-26T12:48:36.470 に答える
2

最適なソリューションではないかもしれませんが、これも機能するはずです

    public Form1()
    {
       InitializeComponent();
       textBox1.Validated += new EventHandler(textBox_Validated);
       textBox2.Validated += new EventHandler(textBox_Validated);
       textBox3.Validated += new EventHandler(textBox_Validated);
       ...
       textBox10.Validated += new EventHandler(textBox_Validated);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.ValidateChildren();
    }

    public void textBox_Validated(object sender, EventArgs e)
    { 
        var tb = (TextBox)sender;
        if(string.IsNullOrEmpty(tb.Text))
        {
            errorProvider1.SetError(tb, "error");
        }
    }
于 2012-08-26T11:49:25.123 に答える
1

編集:

var controls = new [] { tx1, tx2. ...., txt10 };
foreach(var control in controls.Where(e => String.IsNullOrEmpty(e.Text))
{
    errorProvider1.SetError(control, "Please fill the required field");
}
于 2012-08-26T11:49:44.533 に答える