Winforms 面板可见性问题

Winforms 面板可见性问题,winforms,compact-framework,layer,Winforms,Compact Framework,Layer,有3个面板pnlPanel0、pnlPanel1、pnlPanel2具有相同的大小和位置 使用“左”或“右”按钮,我需要更改每个面板的可见性 使用pnlPanel0(包含标签)和pnlPanel2(包含按钮)-确定 但对于pnlPanel1(包含ListView): curLayer==1:pnlPanel1之后。Visible=true; 带有ListView的面板仍然不可见 但是如果pnlPanel1没有与pnlPanel0和pnlPanel2相交-OK 为什么? 可能在这种情况下,“放在前

有3个面板pnlPanel0、pnlPanel1、pnlPanel2具有相同的大小和位置

使用“左”或“右”按钮,我需要更改每个面板的可见性

使用pnlPanel0(包含标签)和pnlPanel2(包含按钮)-确定

但对于pnlPanel1(包含ListView):

curLayer==1:pnlPanel1之后。Visible=true; 带有ListView的面板仍然不可见

但是如果pnlPanel1没有与pnlPanel0和pnlPanel2相交-OK

为什么?

可能在这种情况下,“放在前面”/“放在后面”有问题吗

是否有其他安全且无问题的解决方案

     if (curLayer == 0)
        {
            pnlPanel0.Visible = true;
            pnlPanel1.Visible = false;
            pnlPanel2.Visible = false;
        }
        else if (curLayer == 1)
        {
            pnlPanel0.Visible = false;
            pnlPanel1.Visible = true;
            pnlPanel2.Visible = false;
        }
        else if (curLayer == 2)
        {
            pnlPanel0.Visible = false;
            pnlPanel1.Visible = false;
            pnlPanel2.Visible = true;
        }

        MessageBox.Show(Convert.ToString(pnlPanel1.Visible)); // always false
.NET CF 3.5/WinForms/VS 2008/WinCE可能的解决方案:


不带面板

我有一个表单,上面有7个面板控件

Form\u Load
中,所有面板都设置为
.Dock=DockStyle.Fill

此外,所有面板共享相同的
GotFocus
事件:

private void ActivePanel_GotFocus(object sender, EventArgs e) {
  Panel pnl = sender as Panel;
  if (pnl != null) {
    pnl.BringToFront();
  }
}
您是否需要对特定的面板执行某些操作?好的,然后看看这个版本:

private void ActivePanel_GotFocus(object sender, EventArgs e) {
  Panel pnl = sender as Panel;
  if (pnl != null) {
    pnl.BringToFront();
    if (pnl.Name == pnlPanel0.Name) {
      // Do something with pnlPanel0
    }
  }
}

您确定没有将一个面板嵌套在另一个面板中吗?如果出现这种情况,当您将父面板设置为Visible=False时,嵌套面板也将不可见。可能重复“确定”,我尝试在没有面板的情况下解决问题。标签中的背景色存在一些问题