面板清除所有内容

11

我想要重置一个面板到初始状态。例如,我将一张图片设置为背景,并在面板的一部分上绘制图形。现在我想要清除所有内容,该如何操作?


你能否放弃旧的并将new Panel();分配给引用? - Bala R
1
我猜你是在编译时使用设计师,并且你想在运行时“清除”面板?你还需要清除哪些其他更改,更多细节会更好。 - Vincent B.
@Vincent B:我只需要清空面板。我写了一个属性“ClearPanel”,在里面我尝试了 \n 1. 设置背景= null \n 2. panel.Controls.Clear();但是什么都不起作用。 - y_zyx
Rauf K:一个属性还是一个方法?你考虑过调用suspendLayout()和resumeLayout(true)进行修改吗?你确定你的方法被调用了吗? - Vincent B.
没有任何一种提出的解决方案对我起作用。 - nu everest
显示剩余2条评论
5个回答

22

首先你需要清空面板:

panel1.Controls.Clear();

然后调用初始表单:

panel1.Controls.Add(orig_form);

5
使用以下代码从面板中删除所有图形:
panel1.Invalidate();

如果您需要添加一些内容到面板的初始状态中,那么在调用invalidate之后,您需要再次设置这些内容。

如果面板的初始状态需要一些图形或数据,您可以将它们放在面板的graphics事件中,这样每次调用invalidate时,您的面板都会获得带有这些项目的初始状态。


3
使用 panel1.refresh(); 命令。它会将面板重置为初始状态。

1
这是我唯一有效的解决方案:

private void button3_Click(object sender, EventArgs e) // Clear button
{
    using (g = Graphics.FromImage(bmp))
    {
        g.Clear(Color.Transparent); // You can choose another color
                                    // for your background here.
        panel1.Invalidate();
    }
}

0

这对我起作用:

private void button1_Click(object sender, EventArgs e)//clear Data
{
   panel1.Controls.Clear();            
   this.Refresh();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接