如何以一种形式操纵4面板?

时间:2018-10-04 13:24:53

标签: c# winforms

我有4个面板,每个面板都有自己的TextBoxButtonDataGridView。我的问题是只有两个面板显示另一个面板没有显示。当我单击 1st Button时,我想显示panel1并隐藏其他面板。然后,当我单击第二个 Button时,我想隐藏 panel1和另一个面板。我该怎么做?有人可以帮我解决我的问题吗?这有可能发生吗?

private void btnItems_Click(object sender, EventArgs e)
{
    if (pnlItems.Visible != true)
    {
        pnlItems.Visible = true;
        pnlCustomer.Visible = false;
        pnlPOS.Visible = false;
        pnlDelivery.Visible = false;
    }
}

private void btnCustomers_Click(object sender, EventArgs e)
{
    if (pnlCustomer.Visible != true)
    {
        pnlCustomer.Visible = true;
        pnlItems.Visible = false;
        pnlPOS.Visible = false;
        pnlDelivery.Visible = false;
    }

}

private void btnPOS_Click(object sender, EventArgs e)
{
    if (pnlPOS.Visible != true)
    {
        pnlPOS.Visible = true;
        pnlCustomer.Visible = false;
        pnlItems.Visible = false;
    }
}

private void btnDelivery_Click(object sender, EventArgs e)
{
    if (pnlDelivery.Visible != true)
    {
        pnlDelivery.Visible = true;
        pnlPOS.Visible = false;
        pnlCustomer.Visible = false;
        pnlItems.Visible = false;
    }
}

private void frmMain_Load(object sender, EventArgs e)
{
    pnlItems.Visible = true;
    pnlCustomer.Visible = false;
    pnlPOS.Visible = false;
    pnlDelivery.Visible = false;
}

2 个答案:

答案 0 :(得分:3)

让我们提取方法

 private void MakePanelVisisble(Panel panel) {
   Panel[] panels = new Panel[] {
     pnlItems, pnlCustomer, pnlPOS, pnlDelivery,
   }; 

   foreach (var p in panels)
     p.Visible = (p == panel);
 }

然后

 private void btnItems_Click(object sender, EventArgs e) {
   MakePanelVisisble(pnlItems); 
 }

 private void btnCustomers_Click(object sender, EventArgs e) {
   MakePanelVisisble(pnlCustomer); 
 }

 ...

 private void frmMain_Load(object sender, EventArgs e) {
   MakePanelVisisble(pnlItems);
 }

答案 1 :(得分:0)

只需给您的面板添加标签1,2,3,4;

编写这样的方法:

private void ShowPanel(int id)
{
    var panels = myform.Controls.OfType<Panel>();
    foreach(Panel p in panels)
        p.Visible = (int)p.Tag == id)
}

然后在按钮中按如下方式使用它:

private void btnPOS_Click(object sender, EventArgs e)
{
      ShowPanel(2);
}