如何对我的表单中的所有文本框执行String.Is WhiteSpace或Null?

时间:2014-06-01 07:38:26

标签: c#

我有8个文本框,所有这些文本框都应该填充以启用我的按钮,我已经使用下面的代码在计时器中完成了它。

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;
    }
}

它似乎没有检查所有这些我如何检查它们? (窗体)

2 个答案:

答案 0 :(得分:5)

你可以尝试这个:

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

通过这种方式,您可以检查文本框的集合中是否包含文本空白或空格。如果是这样,那么我们采取右手的否定,这将是!true = false。否则结果将是!false = true。

有关名为Any的方法的进一步文档,请查看here

答案 1 :(得分:0)

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