C#只显示一个特定的面板?

时间:2014-09-22 16:51:58

标签: hide panel visible

c #Windows表单:

有没有办法制作一个显示一个特定面板的按钮并隐藏所有其他面板?

这样的事情:

 private void button1_Click(object sender, EventArgs e)
        {
            panel1.Visible = true;
            !panel1.Visible = false;
        }

2 个答案:

答案 0 :(得分:0)

您可以循环浏览表单上的Controls集合,并将所有Panel控件设置为隐藏,然后再显示所需的控件。类似的东西:

private void HidePanels()
{
    foreach (var control in Controls)
        if (control is Panel)
            ((Panel)control).Visible = false;
}

private void button1_Click(object sender, EventArgs e)
{
    HidePanels();
    panel1.Visible = true;
}

如果您将面板嵌套在其他控件中,则可能无法证明这一点。我使用表格已经有一段时间了,所以我不能肯定地说这有多大可能性。但是可以做的一件事就是保留一个显式的面板列表,您希望在其中应用逻辑。像这样:

private IEnumerable<Panel> _panels;
private IEnumerable<Panel> Panels
{
    get
    {
        if (_panels = null)
            _panels = new List<Panel>
             {
                 Panel1,
                 Panel2,
                 Panel3,
                 // etc...
             }
        return _panels;
    }
}

然后循环访问而不是Controls集合:

private void HidePanels()
{
    foreach (var panel in Panels)
        panel.Visible = false;
}

private void button1_Click(object sender, EventArgs e)
{
    HidePanels();
    panel1.Visible = true;
}

这将消除类型转换中的任何错误可能性,并让您更明确地控制要显示或隐藏的面板,因为您可能希望使用面板来处理与此处显示/隐藏的面板无关的其他内容操作

答案 1 :(得分:-1)

只需创建带事件的按钮单击一个面板集可见true,所有其他面板设置为false:

private void button1_Click(object sender, EventArgs e)
{
    panel1.Visible = true;
    panel2.Visible = false;
    panel3.Visible = false;
}