关于c#:Prevent Child Components when Overlapping Panel

Prevent Child Components when Overlapping Panel

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

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

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

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

我喜欢保持简单,因为我是 C# 编程的新手。


这是设计师常见的意外。将第二个面板放在第一个面板上将使其成为第一个面板的子级。解决此问题的两种基本策略:

  • 查看其他 Windows 文档大纲。单击列表中的第二个面板并将其拖到表单中。您需要通过在"属性"窗口中键入其值来手动修复 Location 属性。

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

查看此答案,了解在设计时运行良好并让您在运行时轻松翻转面板的控件。


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

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