C# 有没有办法说所有的条件都是真的

C# 有没有办法说所有的条件都是真的,c#,winforms,C#,Winforms,Windows窗体:是否有一种方法可以说明如果以下所有条件都为真,则“执行此操作”,否则“执行此操作”?我的表单有多个文本框,其中至少有一个需要输入内容。下面的代码检查空文本框,但如果任何文本框为空,则将条件设置为false private void cmdEnter_Click(object sender, EventArgs e) { bool allempty = true; foreach (Control d in Controls) { if

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

可以,只需使用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");
        }
    }