2012-04-08 99 views
-2
TextBox[] txt = new TextBox[4]; 
for (int i = 0; i < 5; i++) 
{ 
    txt[i] = new TextBox(); 
    txt[i].Text = "button" + i; 
} 

這些是創建動態文本框的代碼。我不知道如何刪除這些按鈕。後來我發現這個文本框可以幫助你在你的項目 這是完全刪除文本框的functin。如何刪除在c中創建的動態文本框#

private void CleanForm(Control ctrl) 
    { 
     foreach (Control c in ctrl.Controls) 
     { 
      if (c is TextBox) 
      { 
       ((TextBox)c).Dispose(); 
       CleanForm(this); 
      } 

     } 
    } 
+0

循環中「CleanForm(this)」的用途是什麼?當你從任何引用它的容器中刪除它時,垃圾收集器也將最終「刪除」該文本框。 – 2012-04-08 13:48:06

回答

2

既然你保持到文本框的引用,當你創建它們txt,你可以簡單地在該枚舉刪除。

foreach(TextBox t in txt){ 
    this.Controls.Remove(t); 
    t.Dispose(); 
} 

txt = new Textbox[] {}; // this removes all references to those textboxes. null would work too. 
0

而且它似乎該代碼是不完整的,因爲它更可能是一個問題,我會說,是:爲了

TextBox控制將出現在Form/Control有成爲Controls收藏的會員吧。換句話說,以「刪除」(我想你在談論從接口刪除),你可以做簡單的做這樣的事情:

ctrl.Controls.Remove(textBoxControl); 
textBoxControl.Dispose(); 

希望這有助於。