我有以下代码:
marathonPanel.Visible = false;
resultPanel.Visible = true;
但只有marathonPanel
变得不可见,而resultPanel
保持不可见。当我检查resultPanel.Visible
它的值设置为false。
我也试过
resultPanel.BringToFront();<br>
resultPanel.Visible = true;
谁能帮我?
当您在 Visual Studio 窗体设计器中设计两个重叠面板时,会发生这种情况。将一个面板拖到另一个面板中太容易了,被拖动的面板成为第一个面板的孩子。
我通常在不同的位置绘制面板。第一个在预期的位置,第二个在不同的位置,然后在运行时将第二个移动到第一个的相同位置。
在Form_Load
resultPanel.Left = marathonPanel.Left;
resultPanel.Top = marathonPanel.Top;
这是一个常见的设计师事故,由 Panel 是一个容器控件引起的。重叠两个面板是一个问题。您的 resultPanel 最终将成为 marathonPanel 的子项。因此,当您使 marathonPanel 不可见时,孩子也将始终不可见。
使用 View + (Other Windows) + Document Outline 解决问题。将 resultPanel 拖放到表单上。手动编辑 Location 属性,不要用鼠标移动控件,否则面板会将其吸回。
另一种方法是故意放错位置,这样它就不会被吸走,并在表单构造函数中修复 Location 属性。在设计器中效果更好的更友好的 hack 是使用 TabControl 代替。检查此答案中的示例 StackPanel 。
还有另一种方法可以找出此类问题。如果您查看 *.resx 文件,它会告诉您哪个控件作为父控件发生,哪个控件是子控件
您也可以在 Visual Studio 中提供的文档大纲中查看此内容。