重叠面板时防止子组件

时间:2012-01-08 11:59:30

标签: c# winforms children panels

我有一个WinForms应用程序,它有两个面板,分别包含一个usercontrol组件(每个面板中有一个)。但是,由于两个面板的大小相同且位置相同,因此最顶部的面板成为另一个面板的子面。我希望能够隐藏一个面板,然后显示另一个面板:

this.panel1.visibile = false;
this.panel2.visibile = true;

但是当我隐藏panel1时,第二个面板也被隐藏了。

如何让panel2成为panel1的非子级?

我喜欢简单易懂,因为我是C#Programming的新手。

2 个答案:

答案 0 :(得分:0)

设计师会自动执行此操作,因为它假定当您将一个控件拖到另一个控件上时,您希望将其作为该控件的子控件。

我通常做的是在窗体上的不同位置创建控件,然后使用属性手动匹配两个控件的大小位置。

答案 1 :(得分:0)

这是设计师的常见事故。将第二个面板放在第一个面板的顶部将使其成为第一个面板的子面板。解决这个问题的两个基本策略是:

  • 查看+其他Windows +文档大纲。单击列表中的第二个面板,然后将其拖到表单中。您需要通过在“属性”窗口中键入其值来手动修复“位置”属性。

  • 将第二个面板的左上角稍微放在第一个面板的左侧或顶部。通过在InitializeComponent()调用之后分配其Location属性,将其放在表单构造函数中的正确位置。

检查this answer以获得在设计时效果良好的控件,并让您在运行时轻松翻转面板。