【问题标题】:Prevent Child Components when Overlapping Panel重叠面板时防止子组件
【发布时间】:2012-01-08 11:59:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# winforms children panels


    【解决方案1】:

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

    • 视图 + 其他窗口 + 文档大纲。单击列表中的第二个面板并将其拖到表单中。您需要通过在“属性”窗口中输入值来手动修复 Location 属性。

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

    检查this answer 是否有一个在设计时运行良好并让您在运行时轻松翻转面板的控件。

    【讨论】:

    • 谢谢,在 initializeComponent() 中初始化它很有效
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2012-12-04
      • 1970-01-01
      相关资源
      最近更新 更多