如果所有条件都是真的,有没有办法说,否则

时间:2013-03-06 20:29:55

标签: c# winforms

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

3 个答案:

答案 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