Как проверить, пусто ли все текстовое поле при нажатии и ввести сообщение об ошибке?

Я хочу проверить, пусто ли какое-либо текстовое поле при нажатии кнопки, а затем отобразить соответствующее сообщение SetError на их стороне.

bool isIncomplete = false;
foreach (Control control in this.Controls)
{
    if (control is TextBox)
    {
        TextBox tb = control as TextBox;
        if (string.IsNullOrWhiteSpace(tb.Text))
        {
            isIncomplete = true;
            break;
        }
    }
} // I think this.controls does not work properly..

if (isIncomplete)
{
    errorProvider1.SetError(firstname_txtbox, "First Name is required.");
    errorProvider2.SetError(lastname_txtbox, "Last Name is required.");

    MessageBox.Show("Please fill all the textbox correctly!");
    return;

} else if(firstname_txtbox.Text.Length < 2)
{ 
  errorProvider1.SetError(firstname_txtbox, "First Name need to be at least 2 characters"); //this error message does appear through...
}else if() { etc..

Сообщение errorProvider не отображается при нажатии. Мои текстовые поля находятся внутри панели...


person Emanula Sohn    schedule 27.11.2018    source источник
comment
вам нужно перебирать элементы управления панели, а не формы. Один ярлык: this.panel1.Controls.OfType<TextBox>() вернет только текстовые поля   -  person Mong Zhu    schedule 27.11.2018
comment
спасибо, думаю работает   -  person Emanula Sohn    schedule 27.11.2018
comment
stackoverflow.com/a/33080822/3110834   -  person Reza Aghaei    schedule 27.11.2018
comment
stackoverflow.com/a/46129052/3110834   -  person Reza Aghaei    schedule 27.11.2018


Ответы (1)


используйте String .IsNullOrEmpty(String), чтобы проверить, пуст ли элемент управления.

private void button1_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(textBox1.Text))
        {
            MessageBox.Show("Please fill all the textbox correctly!");
        }
        else
        {
            MessageBox.Show("Not empty");
        }
    }
person Joseph    schedule 27.11.2018