C# 有没有办法说所有的条件都是真的
Windows窗体:是否有一种方法可以说明如果以下所有条件都为真,则“执行此操作”,否则“执行此操作”?我的表单有多个文本框,其中至少有一个需要输入内容。下面的代码检查空文本框,但如果任何文本框为空,则将条件设置为falseC# 有没有办法说所有的条件都是真的,c#,winforms,C#,Winforms,Windows窗体:是否有一种方法可以说明如果以下所有条件都为真,则“执行此操作”,否则“执行此操作”?我的表单有多个文本框,其中至少有一个需要输入内容。下面的代码检查空文本框,但如果任何文本框为空,则将条件设置为false private void cmdEnter_Click(object sender, EventArgs e) { bool allempty = true; foreach (Control d in Controls) { if
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");
}
}
可以,只需使用LINQ中的
Any
(或All
,具体取决于适合您的选项):
if(Controls.OfType<TextBox>()
.Any(textbox => textbox.Text == ""))
MessageBox.Show("Textboxes are all empty");
else
MessageBox.Show("Entry Added");
if(Controls.OfType())
.Any(textbox=>textbox.Text==“”)
Show(“文本框都是空的”);
其他的
MessageBox.Show(“添加的条目”);
if(Controls.OfType().Any(x=>x.Text==“”))
//至少有一个是空的
尽管从变量名称来看,您似乎需要:
if(Controls.OfType<TextBox>().Any(x => x.Text != ""))
// at least one isn't empty
if(Controls.OfType().Any(x=>x.Text!=“”)
//至少有一个不是空的
或:
if(Controls.OfType().All(x=>x.Text==“”)
//都是空的
在.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");
}
}
private void cmdEnter\u单击(对象发送者,事件参数e)
{
if(Controls.OfType().All(tb=>String.IsNullOrEmpty(tb.Text)))
{
Show(“文本框都是空的”);
}
其他的
{
MessageBox.Show(“添加的条目”);
}
}
变量命名和代码结果让我有点困惑。它像预期的那样工作吗?我仍然不能让它工作,但我正在努力。如果一个文本框中有某些内容,“文本框都是空的”仍然会被显示。我将用textbox.Text==string.empty替换为textbox.Text!=空,然后将if(allempty==false)替换为if(allempty==true)。LINQ中的解决方案更好。检查是否至少有一个复选框为空,然后如果显示“TextBox都为空”为true,这不是有点奇怪吗?@Laurent是的,这很奇怪,但由于不清楚错误是在文本的措辞中还是在代码的功能中,我选择将其保持与OP的代码功能等效。由于前后不一致,尽管我加入了关于All
方法的注释,如果这是理想的行为,可以使用该方法。明白,但这会让我的眼睛流血。
if(Controls.OfType<TextBox>().All(x => x.Text == ""))
// all are empty
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");
}
}