如何在WinForms中使Panel可见?

时间:2013-08-02 20:47:45

标签: c# winforms panel

我有以下代码:

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

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

我也试过

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

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

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

使用View +(Other Windows)+ Document Outline来解决问题。拖动resultPanel并将其放在窗体上。手动编辑“位置”属性,不要使用鼠标移动控件,否则面板会将其重新吸回。

另一种方法是故意错误放置它,以免它被吸收并修复表单构造函数中的Location属性。在设计器中更好用的黑客是使用TabControl代替。检查示例StackPanel in this answer

答案 1 :(得分:2)

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

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

Form_Load

中的

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

答案 2 :(得分:0)

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

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