c#快速清除所有文本框中內容(轉)
阿新 • • 發佈:2018-12-02
oid 窗體 通用 reac type() control pan div tex
如何清除Form中所有的文本框內容?分兩種情況:(1)當所有的文本框都是頂級控件,即它們都直接位於this.Controls(或groupBox.Controls)中,此時遍歷一遍清除即可。(2)當文本框不全處於頂級,即部分包含在某些容器控件內,如groupBox中,由於控件在窗體中是嚴格分級擺放的。此時的文本框有的位於this.Controls中(即Form控件集中),有的則位於groupBox.Controls中。
對於(1),直接這樣寫就可:
//或為groupBox1.Controls/panel1.Controls foreach (Control ctrl in Controls) {if (ctrl is TextBox) ctrl.Text = ""; }
寫出這樣幾行簡單的代碼是為了強調一個地方,當某些文本框是用戶自己定義的一個繼承TextBox的控件時,像上面那樣寫,都可識別,但若寫成:if (ctrl.GetType() == typeof(TextBox)),這種判斷方式相對嚴格,自定義文本框不會被識別。
為了解決(2)中提出的問題,可寫一個更為靈活通用的方法來檢測出這些文本框,並將之清空。方法如下:
private void ClearText(Control ctrlTop) {<br> if (ctrlTop.GetType() == typeof(TextBox)) ctrlTop.Text = ""; else { foreach (Control ctrl in ctrlTop.Controls) { ClearText(ctrl); //循環調用 } } }
c#快速清除所有文本框中內容(轉)