检查控件中是否至少有一个文本框不为空

Check if at least one Textbox is not null within control

我正在尝试检查是否至少有一个 Textbox 不为空,如下所示,但如果所有 Textbox 不为空且至少有一个

foreach (TextBox cont in GB_Search.Controls.OfType<TextBox>())
{
    if (string.IsNullOrEmpty(cont.Text))
    {
        // at least one control 
    }
}

您可以为此使用 Linq。

以下将检查至少有一个不应该为 null,如果至少有一个文本框包含值,则 return true

var oneHasValue = GB_Search.Controls.OfType<TextBox>()
                                    .Any(x=>!string.IsNullOrEmpty(x.Text));

如果所有内容都不为 null 或为空,则以下将 return true

var allContainValue = GB_Search.Controls.OfType<TextBox>()
                                      .All(x=>!string.IsNullOrEmpty(x.Text));

System.Windows.Controls TextBox

TextBox.Text 属性 的默认值是一个空字符串,所以除非你明确地将它设置为 null 我不明白你为什么要检查无效性。

您很可能想看看 TextBox.Text 中是否有任何一个是空的,如下所示:

var result = GB_Search.Controls.OfType<TextBox>()
                               .Any(textBox => textBox.Text.Length == 0);

或者如果有 non-empty:

var result = GB_Search.Controls.OfType<TextBox>()
                               .Any(textBox => !(textBox.Text.Length == 0));

注意 - 我专门使用 TextBoxLength 属性 来检查它是否为空,而不是 String.IsNullOrEmpty,这仅仅是因为如前所述TextBox.Text 上面默认是一个空字符串,正如您在 post 下的评论部分中提到的那样,您没有明确将其设置为 null,因此无需使用 String.IsNullOrEmpty 因为它会执行您不需要的冗余检查。

System.Windows.Forms TextBox

正在查看是否有任何 TextBox.Text 为 null 或为空:

var result = GB_Search.Controls.OfType<TextBox>()
                               .Any(textBox => string.IsNullOrEmpty(textBox.Text));

或者如果有任何非空和非空:

var result = GB_Search.Controls.OfType<TextBox>()
                               .Any(textBox => !string.IsNullOrEmpty(textBox.Text));