目前我的表单布局如下:
Dock = DockStyle.Fill
。显示表单时,两个面板都被隐藏。单击button1时,将显示panel1。单击button2时,将显示panel2。现在,用户可以看到或单击的唯一控件是button3和panel2。但是他们可以通过按Tab键将焦点放在button1或button2上。
按钮的点击事件:
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
panel1.BringToFront();
}
后退按钮的点击事件:
private void back_button1_Click(object sender, EventArgs e)
{
panel1.Visible = false;
}
我该如何防止这种情况?
另外,为什么我选择这个设计?因为实际上有很多面板,其中许多可以以多种方式显示,并且在它们上面有一个后退按钮。因此,当按下后退按钮时,唯一要做的就是隐藏当前面板,并且不需要知道之前显示的面板。
答案 0 :(得分:0)
我终于通过选择其他方式解决了这个问题。这是我添加到表单中的代码:
private List<Panel> Pages { get; } = new List<Panel>();
public Panel CurrentPage
{
get
{
return Pages.Last();
}
}
public void ShowPage(Panel page)
{
Pages.Add(page);
foreach (var panel in Controls.OfType<Panel>())
{
if (panel.Dock == DockStyle.Fill)
panel.Visible = false;
}
page.Visible = true;
}
public void HidePage()
{
if (CurrentPage != null)
CurrentPage.Visible = false;
Pages.RemoveAt(Pages.Count - 1);
if (CurrentPage != null)
CurrentPage.Visible = true;
}