我有以下代码:
marathonPanel.Visible = false;
resultPanel.Visible = true;
但只有marathonPanel
不可见且resultPanel
保持不可见。
当我检查resultPanel.Visible
的值时,它会设置为 false 。
我也试过
resultPanel.BringToFront();<br>
resultPanel.Visible = true;
任何人都可以帮助我吗?
答案 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中提供的文档大纲中查看此内容。