2012-08-26 23 views
6

10 metin kutusuna sahibim, şimdi bir düğme tıklatıldığında bunların hiçbirinin boş olmadığını kontrol etmek istiyorum. Benim kodudur: Doğrusu her birey için yazmak yerine, bir kerede tüm metin kutularının kontrol edebilirsiniz herhangi bir yoluerrorprovider kullanarak birden çok metin kutusunu doğrulama

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

var mı?

+0

Bu neredeyse kesinlikle Windows Forms, asp.net değil. – Adam

cevap

20

Evet, var.

İlk olarak, böyle örneğin bir dizinin formdaki tüm metin kutuları elde etmek gerekir: Sonra

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

, onlara sürekli tekrarlanması ve buna göre hatayı ayarlayabilirsiniz:

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

x == "" veya string.IsNullOrEmpty yerine string.IsNullOrWhiteSpace veya boşluk, sekme vb. Ile dolu metin kutularını bir hatayla işaretlemenizi öneririz.

1

optimal çözüm olmasa gerek ama bu da

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"); 
     } 
    } 
1

Edit çalışması gerekir:

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"); 
} 
İlgili konular