从父窗体中删除用户控件

时间:2011-01-03 11:12:15

标签: c# winforms

我使用此代码在主窗体上显示用户控件

    private void MainForm_Load(object sender, EventArgs e)
    {
        Sell sell = new Sell();
        sell.Dock = DockStyle.Fill;
        this.Controls.Add(sell);
    }

我想从主窗体中删除此用户控件,但此代码无法正常工作

this.Controls.Remove(sell);

我尝试了this.Parent.controls.Remove(sell);,但它也无效。 请告知一些事情......

2 个答案:

答案 0 :(得分:7)

也许您正在创建另一个Sell控件并尝试删除它?如果是这样,那将无效,因为它与您在表单加载时添加的对象不同。

执行您想要的操作的一种方法是为您的Sell控件命名,并在以后使用该名称将其删除:

private void MainForm_Load(object sender, EventArgs e)
{
    Sell sell = new Sell();
    sell.Name = "mainSell";
    sell.Dock = DockStyle.Fill;
    this.Controls.Add(sell);
}

// Later...
this.Controls.RemoveByKey("mainSell");

答案 1 :(得分:3)

您在MainForm_Load scope中定义了销售控制,并希望将其移除到另一个范围内,以便您不能,您可以在更一般的范围内定义它,然后将其删除:

Sell sell = new Sell();
private void MainForm_Load(object sender, EventArgs e)
{
    sell.Dock = DockStyle.Fill;
    this.Controls.Add(sell);
}

// other scope
this.Controls.Remove(sell);