2014-06-01 2 views
2

У меня есть 8 текстовых полей, и все они должны быть заполнены, чтобы включить мою кнопку, я уже сделал это с кодом ниже в таймере.Как выполнить String.IsWhiteSpaceOrNull для всех текстовых полей в моей форме?

private void tmrTextChanged_Tick(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrWhiteSpace(txtEnterUsername.Text) && !string.IsNullOrWhiteSpace(txtEnterPassword.Text) && 
      !string.IsNullOrWhiteSpace(txtConfirmPassword.Text) && !string.IsNullOrWhiteSpace(txtFirstName.Text) && 
      !string.IsNullOrWhiteSpace(txtLastName.Text) && !string.IsNullOrWhiteSpace(txtGender.Text) && 
      !string.IsNullOrWhiteSpace(txtTelephone.Text) && !string.IsNullOrWhiteSpace(txtMobilePhone.Text) && 
      !string.IsNullOrWhiteSpace(txtCity.Text)) 
      btnCreateAccount.Enabled = true; 
    else 
     btnCreateAccount.Enabled = false; 
} 

но условие такое длинное и что, если текстовые поля были больше этого? поэтому я пытаюсь написать его по-другому, но кнопка позволяет, прежде чем я их заполню, вот код.

private void tmrTextChanged_Tick(object sender, EventArgs e) 
{ 
    foreach (Control item in Controls.OfType<TextBox>()) 
    { 
     if (!string.IsNullOrWhiteSpace(item.Text)) 
      btnCreateAccount.Enabled = true; 
     else 
      btnCreateAccount.Enabled = false; 
    } 
} 

кажется, что он не проверяет все, как я могу проверить их все? (Окна формы)

+0

Проверочное событие –

+0

У вас есть ошибка в вашей логике. Он вернет 'Enabled'' true' или 'false' в зависимости от проверки последнего элемента управления. –

ответ

5

Вы можете попробовать это:

btnCreateAccount.Enabled = !Controls.OfType<TextBox>().Any(x=>string.IsNullOrWhiteSpace(x.Text)); 

Таким образом, вы убедитесь, что в коллекции текстовых боксов любой с его текст пустым или белое пространство. Если это так, то мы принимаем отрицание правой руки, которая была бы! True = false. В противном случае результатом будет! False = true.

Для получения дополнительной документации по методу Any, пожалуйста, посмотрите here.

+0

вы забыли добавить '!' –

+0

Да, я сделаю это прямо сейчас. Благодарю вас! – Christos

+0

tnx, что здесь x? не могли бы вы рассказать о =>. –

0
btnCreateAccount.Enabled = !Controls.OfType<TextBox>() 
            .Select(tb=>tb.Text) 
            .Any(string.IsNullOrWhiteSpace) 
Смежные вопросы