繁体   English   中英

查看文本框是否为空C#的最有效方法

[英]Most efficient way to see if any of textBoxes are empty C#

我有一个可以包含多个文本框的Webform。

可以说3:txt1 txt2 txt3

显然我可以编写以下代码:

bool atleastOneTextboxEmpty=false;

If (txt1.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt2.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}
If (txt3.Text.Tostring().Trim()=="")
{
atleastOneTextboxEmpty=true;
}

但是我很确定有更好的方法可以做到这一点(但是到目前为止我还没找到它)。

注意:在我的情况下,我不允许使用必需的字段验证器,并且表单可能具有更多文本框,其中某些文本框允许为空(因此,我无法遍历所有表单文本框)。

Lambda方式! 第一部分Me.Controls.OfType(Of TextBox)()获取表单上的所有文本框, Any函数检查条件。

Dim anyEmptyTBs = Me.Controls.OfType(Of TextBox)().Any(Function(tb) String.IsNullOrWhiteSpace(tb.Text))

创建文本框的集合/数组,然后可以执行以下操作:

var textBoxCollection = new[] { txt1, txt2, txt3 };

bool atleastOneTextboxEmpty = textBoxCollection
                                   .Any(t => String.IsNullOrWhiteSpace(t.Text));

上面的代码将检查数组textBoxCollection中的所有文本框,并检查其中是否有仅空/空白值。

使用String.IsNullOrWhiteSpace而不是进行修剪,而不是将值与空字符串进行比较。 请记住,.Net Framework 4.0或更高版本提供String.IsNullOrWhiteSpace


另一个选择是将这些特定的文本框放在Panel等组控件中,然后可以使用

yourPanel.Controls.OfType<TextBox>().Any(.....

您可以这样写:

bool atleastOneTextboxEmpty =
  txt1.Text.Trim() == "" ||
  txt2.Text.Trim() == "" ||
  txt3.Text.Trim() == "";

您还可以将控件放入数组中,并检查是否为空:

bool atleastOneTextboxEmpty =
  new TextBox[] { txt1, txt2, txt3 }
  .Any(t => t.Text.Trim() == "");

您可以使用Repeater控件并在中定义一个TextBox。 在后面的代码中,执行您的操作,但只执行一个if语句,该语句会使控件中具有ID的文本框无效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM