【发布时间】:2017-10-12 01:31:58
【问题描述】:
我有 4 个面板(彼此重叠)。我想隐藏所有面板并根据单击的按钮显示其中一个。当我启动应用程序并单击按钮时,它成功隐藏了所有面板,但没有显示我想要的面板。我做错了什么?
这是我的代码:
namespace Detailing
{
public partial class MainForm : Form
{
public void hidePanels()
{
welcomePanel.Width = 0;
homePanel.Width = 0;
historyPanel.Width = 0;
savePanel.Width = 0;
}
public MainForm()
{
InitializeComponent();
Load += new EventHandler(MainForm_Load);
}
private void MainForm_Load(object sender, EventArgs e)
{
hidePanels();
welcomePanel.Width = 1306;
}
private void homeButton_Click(object sender, EventArgs e)
{
hidePanels();
homePanel.Width = 1306;
}
}
}
P.S. 我尝试使用welcomePanel.Hide(); 和homePanel.Show();,但没有成功。我也尝试使用welcomePanel.Visible = false; 和homePanel.Visible = true;,但遗憾的是它并没有那么好。
【问题讨论】:
-
您应该确保没有在另一个面板中包含一个面板。换句话说,任何面板都不应该是另一个面板的子面板,否则隐藏父面板也会隐藏子面板。
-
根据名称,在我看来这些确实应该是不同的形式,而不是嵌套面板。
-
不要弄乱宽度,而只是让它们不可见:
yadayada.Visible=true/false:另外:将它们放在 List中,这样你就可以遍历它们!当然它会起作用。但是,是的,它们不能嵌套。为了避免在代码中或使用键盘(!!!!!!)而不是使用鼠标(!!!!!!) -
在 Visual Studio 的
Document Outline窗口中检查面板层次结构 -
@TaW 感谢您的建议和笔记。我确实先尝试了 Visible = true/false,但它没有用。问题是面板是嵌套的。现在它工作得很好。谢谢。
标签: c# winforms button show-hide panels