C# 如何删除动态生成按钮的RichTextBox?
我正在生成一个RichTextBox和一个带有另一个按钮的按钮。单击生成的按钮时,我想删除RichTextBox及其本身C# 如何删除动态生成按钮的RichTextBox?,c#,winforms,C#,Winforms,我正在生成一个RichTextBox和一个带有另一个按钮的按钮。单击生成的按钮时,我想删除RichTextBox及其本身 static int i = 1; private void generate_Click(object sender, EventArgs e) { RichTextBox text = new RichTextBox(); Button delete = new Button(); this.Controls.Add(text
static int i = 1;
private void generate_Click(object sender, EventArgs e)
{
RichTextBox text = new RichTextBox();
Button delete = new Button();
this.Controls.Add(text);
this.Controls.Add(delete);
i++;
}
可以从窗体中删除控件,如下所示:
private void generate_Click(object sender, EventArgs e)
{
RichTextBox text = new RichTextBox();
Button delete = new Button();
this.Controls.Add(text);
this.Controls.Add(delete);
i++;
//---- Remove Part --------
this.Controls.Remove(text);
//------------------------
}
我希望这对您有所帮助。您可以在表单中声明该字段
RichTextBox m_Control;
然后,分配它
private void generate_Click(object sender, EventArgs e)
{
RichTextBox text = new RichTextBox();
Button delete = new Button();
m_Control = text;
this.Controls.Add(text);
this.Controls.Add(delete);
i++;
}
当您需要删除它时,您可以这样做
this. Controls. Remove(m_Control) ;
您可以将控件的名称设置为delete方法可用于以后查找控件的名称。您还可以将对控件的引用存储在delete方法可以使用的类成员中。这可能有助于您的声明位于错误的范围内。“text”和“delete”(顺便说一句,糟糕的名字)应该在表单级别声明。使用
text.Dispose()
和delete.Dispose()代码>以摆脱它们。仅调用this.Controls.Remove(…)
是不够的,因为它会将控件保留在内存中。您确实需要对添加的控件调用Dispose()
。+在这里,你没有卸下按钮。处置这两者,这也将从父容器中移除它们。您还可以使用Lambda,类似于:delete.Click+=(o,evt)=>{text.Dispose();delete.Click-=(obj,ev)=>{};delete.Dispose();}代码>