Windows窗体:有没有办法说明以下所有条件是否都是真的那么'执行此操作',否则“执行此操作”?我的表单有多个文本框,其中至少有一个需要输入内容。我下面的代码检查空文本框,但如果任何文本框为空,则将条件设置为false。
private void cmdEnter_Click(object sender, EventArgs e)
{
bool allempty = true;
foreach (Control d in Controls)
{
if (d is TextBox)
{
TextBox textbox = d as TextBox;
if (textbox.Text == string.Empty)
{
allempty = false;
}
}
}
if (allempty == false)
{
MessageBox.Show("Textboxes are all empty");
}
else
{
//Data entry code
MessageBox.Show("Entry Added");
}
}
答案 0 :(得分:5)
在.NET 3.5或更高版本中,您可以使用linq并执行以下操作:
private void cmdEnter_Click(object sender, EventArgs e)
{
if (Controls.OfType<TextBox>().All(tb => String.IsNullOrEmpty(tb.Text)))
{
MessageBox.Show("Textboxes are all empty");
}
else
{
MessageBox.Show("Entry Added");
}
}
答案 1 :(得分:4)
是的,只需使用Any
(或All
,取决于哪个适合您)来自LINQ:
if(Controls.OfType<TextBox>()
.Any(textbox => textbox.Text == ""))
MessageBox.Show("Textboxes are all empty");
else
MessageBox.Show("Entry Added");
答案 2 :(得分:3)
if(Controls.OfType<TextBox>().Any(x => x.Text == ""))
// at least one is empty
虽然您的变量名称似乎需要:
if(Controls.OfType<TextBox>().Any(x => x.Text != ""))
// at least one isn't empty
或者:
if(Controls.OfType<TextBox>().All(x => x.Text == ""))
// all are empty