隐藏和显示面板

时间:2012-11-17 19:06:51

标签: c# .net installer panel

修改
我找到并发布了解决方案。

我正在尝试为我的应用程序创建一个安装程序,我正在尝试使用面板(我不知道这是否是一个很好的方法,但这给了我更多的自定义选项,而不是使用安装盾牌计划)。最好的方法是什么?
这是我所知道的代码:

C#代码

foreach (Control c in Controls)
        {
            if (c is Panel)
            {
                if (c.Name != "pnlBottom")
                {
                    if (c.Name.Contains(_currentPanel.ToString()))
                    {
                        c.Visible = true;
                        return;
                    }
                    else
                    {
                        c.Visible = false;
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:5)

试试这个,它会改变单个面板的可见性:

private void PanelVisible(string panelName, bool visible)
{
    var panel = this.Controls.OfType<Panel>().FirstOrDefault(p => p.Name == panelName);
    if (panel != default(Panel)) panel.Visible = visible;
}

如果你想制作所有不可见的,只有一个:

private void PanelVisible(string panelName)
{
    foreach(var panel in this.Controls.OfType<Panel>().Where(p=>p.Name!="pnlBottom"))
    {
        panel.Visible = panel.Name == panelName;
    }
}

答案 1 :(得分:1)

这是我用来显示面板的代码:

private void ShowPanel(string panel)
    {
        foreach (Control c in Controls)
        {
            if (c is Panel)
            {
                if (c.Name != "pnlBottom")
                {
                    if (c.Name.Contains(panel))
                    {
                        c.Visible = true;
                        return;
                    }
                    else
                    {
                        c.Visible = false;
                    }
                }
            }
        }
    }

这是我用来调用它并浏览我的面板的代码:
下一步按钮

private void btnNext_Click(object sender, EventArgs e)
    {
        if (pnlContent1.Visible) { ShowPanel("2"); return; }
        if (pnlContent2.Visible) { ShowPanel("3"); return; }
        if (pnlContent3.Visible) { ShowPanel("4"); return; }
        if (pnlContent4.Visible) { ShowPanel("5"); return; }
    }

后退按钮

private void btnBack_Click(object sender, EventArgs e)
    {
        if (pnlContent2.Visible) { ShowPanel("1"); return; }
        if (pnlContent3.Visible) { ShowPanel("2"); return; }
        if (pnlContent4.Visible) { ShowPanel("3"); return; }
        if (pnlContent5.Visible) { ShowPanel("4"); return; }
    }

我希望这也适用于其他人:D!