查看任何textBox是否为空的最有效方法C#

时间:2015-04-16 19:26:57

标签: c# asp.net vb.net

我有一个可以有多个文本框的网页表单。

让我们说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;
}

但我非常确定有更好的方法可以做到这一点(但到目前为止我无法找到它)。

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

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

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

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

上面将检查数组textBoxCollection中的所有文本框,并检查其中任何一个文本框是否只有空/空白值。

使用String.IsNullOrWhiteSpace代替triming,而不是将值与空字符串进行比较。请记住,{。1}}可用于.Net framework 4.0或更高版本。


另一种选择是将这些特定的文本框放在像String.IsNullOrWhiteSpace这样的组控件中,然后可以使用

Panel

答案 2 :(得分:2)

你可以写得那么简单:

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

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

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

答案 3 :(得分:0)

您可以使用Repeater控件并在其中定义TextBox。在后面的代码中,执行您所做的操作,但只需创建一个if语句,使用控件中的ID来修改文本框