我正在尝试检查是否至少有一个Textbox
不为空,如下所示,但如果所有Textbox
都不为空,则该条件为真,而不仅仅是一个
foreach (TextBox cont in GB_Search.Controls.OfType<TextBox>())
{
if (string.IsNullOrEmpty(cont.Text))
{
// at least one control
}
}
答案 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
,因为它会执行您不需要的冗余检查。
查看String.IsNullOrEmpty
是否为null或空:
TextBox.Text
或者如果有任何非null和非空:
var result = GB_Search.Controls.OfType<TextBox>()
.Any(textBox => string.IsNullOrEmpty(textBox.Text));