您可以查詢表單(或相關容器)的控件集合並過濾文本框,並進一步查詢是否有任何內容爲空(沒有內容應該具有空值)。例如:
var emptyTextboxes = from tb in this.Controls.OfType<TextBox>()
where string.IsNullOrEmpty(tb.Text)
select tb;
if (emptyTextboxes.Any())
{
// one or more textboxes are empty
}
您可以使用流暢的語法有效地做同樣的事情。
bool isIncomplete = this.Controls.OfType<TextBox>().Any(tb => string.IsNullOrEmpty(tb.Text));
if (isIncomplete)
{
// do your work
}
對於此代碼,您應該至少使用Visual Studio 2008/C#3/.NET 3.5。您的項目需要引用System.Core.dll(默認情況下應該有一個),並且您需要類文件中的using System.Linq;
指令。
根據您的意見,如果您無法理解或使用linq版本,請考慮另一種方法。你當然可以在一個明確的循環中做到這一點(Linq代碼最終也將是一個循環)。考慮
bool isIncomplete = false;
foreach (Control control in this.Controls)
{
if (control is TextBox)
{
TextBox tb = control as TextBox;
if (string.IsNullOrEmpty(tb.Text))
{
isIncomplete = true;
break;
}
}
}
if (isIncomplete)
{
}
最後,如果所有的文本框是在一個容器中的代碼被寫入。該容器可能是窗體,面板等。您將需要指向適當的容器(例如,而不是this
(表單)它可能是this.SomePanel
)。如果您使用的是多個嵌套容器中的控件,則需要做更多的工作來以編程方式查找它們(遞歸搜索,顯式串聯等),或者您可能只是將引用預加載到數組或其他集合中。例如
var textboxes = new [] { textbox1, textbox2, textbox3, /* etc */ };
// write query against textboxes instead of this.Controls
你說你有多個組框控件。如果每個GroupBox都加載到窗體上,而不是嵌套在另一個控件中,則可能會使您開始。
var emptyTextboxes = from groupBox in this.Controls.OfType<GroupBox>()
from tb in groupBox.Controls.OfType<TextBox>()
where string.IsNullOrEmpty(tb.Text)
select tb;
你能進一步解釋你的代碼? – user962206 2012-02-26 04:10:06
你有什麼理解麻煩?這是使用Linq,它已經是C#和Visual Studio(2008和2010)的最後兩個版本的一部分。 – 2012-02-26 04:11:25
你可以查詢組件?我從來不知道那裏有沒有在線文檔?我很感興趣我想查看更多關於查詢組件的文檔 – user962206 2012-02-26 04:12:08