2

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

3 回答 3

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");
        }
    }
于 2013-03-06T20:46:09.973 回答
4

是的,只需使用LINQ 中的Any(或All,取决于适合您的):

if(Controls.OfType<TextBox>()
        .Any(textbox => textbox.Text == ""))
    MessageBox.Show("Textboxes are all empty");
else
    MessageBox.Show("Entry Added");
于 2013-03-06T20:31:55.683 回答
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
于 2013-03-06T20:32:04.263 回答