【问题标题】:How to make Panel Visible in WinForms?如何使面板在 WinForms 中可见?
【发布时间】:2013-08-02 20:47:45
【问题描述】:

我有以下代码:

marathonPanel.Visible = false;
resultPanel.Visible = true;

但只有marathonPanel 变得不可见,resultPanel 保持不可见。 当我检查 resultPanel.Visible 的值时,它被设置为 false

我也试过了

resultPanel.BringToFront();<br>
resultPanel.Visible = true;

谁能帮帮我?

【问题讨论】:

  • 试试resultPanel.Show();
  • 是否还有其他东西将Visibile 属性设置回false,例如事件处理程序? resultPanel 是否嵌套在另一个面板中?
  • 在属性窗口中将值改为true
  • 我有一种奇怪的感觉,resultPanel 是 marathonPanel 的孩子,所以当你让第一个不可见时,孩子也是不可见的。要进行测试,请尝试将 resultPanel 移出 marathonPanel 的边界
  • 可能是,我正在检查它

标签: c# winforms panel


【解决方案1】:

当您在 Visual Studio 表单设计器中设计两个重叠的面板时会发生这种情况。将一个面板拖到另一个面板中太容易了,被拖动的面板成为第一个面板的孩子。

我通常在不同的位置绘制面板。第一个在预期的位置,第二个在不同的位置,然后在运行时将第二个移动到第一个的相同位置。

Form_Load

 resultPanel.Left = marathonPanel.Left;
 resultPanel.Top = marathonPanel.Top;

【讨论】:

    【解决方案2】:

    这是一个常见的设计师事故,由 Panel 是一个容器控件引起的。重叠两个面板是一个问题。您的 resultPanel 最终将成为 marathonPanel 的子项。因此,当您使 marathonPanel 不可见时,孩子也将始终不可见。

    使用 View + (Other Windows) + Document Outline 来解决问题。将 resultPanel 拖放到表单上。手动编辑 Location 属性,不要用鼠标移动控件,否则面板会将其吸回。

    另一种方法是故意放错位置,这样它就不会被吸走,并在表单构造函数中修复 Location 属性。在设计器中效果更好的更友好的 hack 是使用 TabControl 代替。检查示例 StackPanel in this answer

    【讨论】:

      【解决方案3】:

      还有另一种方法可以找出此类问题。 如果您查看 *.resx 文件,它会告诉您哪个控件作为父控件发生,哪个控件是子控件

      您还可以在 Visual Studio 中提供的文档大纲中查看此内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 2011-07-15
        • 1970-01-01
        • 2015-10-03
        • 1970-01-01
        • 2011-04-25
        • 1970-01-01
        相关资源
        最近更新 更多