1. 程式人生 > >c#快速清除所有文本框中內容(轉)

c#快速清除所有文本框中內容(轉)

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#快速清除所有文本框中內容(轉)