[英]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.