0

我有以下代码:

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

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

我也试过

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

谁能帮我?

4

3 回答 3

4

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

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

Form_Load

 resultPanel.Left = marathonPanel.Left;
 resultPanel.Top = marathonPanel.Top;
于 2013-08-02T20:57:19.450 回答
2

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

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

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

于 2013-08-02T20:52:51.083 回答
0

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

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

于 2013-08-03T09:42:42.000 回答