如何清除Form中所有的文本框內(nèi)容?
分兩種情況:
(1)當(dāng)所有的文本框都是頂級控件,即它們都直接位于this.Controls(或groupBox.Controls)中,此時遍歷一遍清除即可。
(2)當(dāng)文本框不全處于頂級,即部分包含在某些容器控件內(nèi),如groupBox中,由于控件在窗體中是嚴(yán)格分級擺放的。此時的文本框有的位于this.Controls中(即Form控件集中),有的則位于groupBox.Controls中。
對于(1),直接這樣寫就可:
foreach (Control ctrl in Controls)//或?yàn)間roupBox1.Controls/panel1.Controls
{
if (ctrl is TextBox)
ctrl.Text = "";
}
寫出這樣幾行簡單的代碼是為了強(qiáng)調(diào)一個地方,當(dāng)某些文本框是用戶自己定義的一個繼承TextBox的控件時,像上面那樣寫,都可識別,但若寫成:if (ctrl.GetType() == typeof(TextBox)),這種判斷方式相對嚴(yán)格,自定義文本框不會被識別。
為了解決(2)中提出的問題,可寫一個更為靈活通用的方法來檢測出這些文本框,并將之清空。方法如下:
private void ClearText(Control ctrlTop)
{
if (ctrlTop.GetType() == typeof(TextBox))
ctrlTop.Text = "";
else
{
foreach (Control ctrl in ctrlTop.Controls)
{
ClearText(ctrl); //循環(huán)調(diào)用
}
}
}
在需要的地方,直接調(diào)用ClearText(this)就大功告成了。