检查控件中是否至少有一个Textbox不为null

时间:2018-02-24 13:53:43

标签: c# .net-3.5

我正在尝试检查是否至少有一个Textbox不为空,如下所示,但如果所有Textbox都不为空,则该条件为真,而不仅仅是一个

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

2 个答案:

答案 0 :(得分:1)

你可以使用Linq。

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

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

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

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

答案 1 :(得分:1)

System.Windows.Controls TextBox

TextBox.Text属性的默认值为空字符串,因此,除非您明确将其设置为null,否则我不明白为什么您要这样做检查无效。

您最有可能希望查看TextBox.Text中的任何一个是否为空:

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

或者如果有非空的话:

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

注意 - 我已经专门使用Length的{​​{1}}属性来检查它是否为空,而不是TextBox,这只是因为如上所述默认情况下,String.IsNullOrEmpty以上是一个空字符串,正如您在帖子的评论部分中提到的那样,您没有明确地将其设置为TextBox.Text,因此没有需要使用null,因为它会执行您不需要的冗余检查。

System.Windows.Forms TextBox

查看String.IsNullOrEmpty是否为null或空:

TextBox.Text

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

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