我有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;
}
}
它似乎没有检查所有这些我如何检查它们? (窗体)
答案 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 )