2012-04-08 65 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(); 

希望这有助于。