2011-12-01 67 views
0

我有两个面板占用splitviewcontainer一侧的相同空间。 我想动态显示或隐藏一个面板或其他。winforms面板隐藏和显示

途径到目前为止,我已经试过有:

if (treeView1.SelectedNode.Name.Contains("cat")) { 
    menuItemPanel.SendToBack(); 
    foreach (Control control in menuItemPanel.Controls) 
     control.SendToBack(); 
    menuItemPanel.Visible = false; 
    categoryPanel.Hide(); 

    categoryPanel.Visible = true; 
    categoryPanel.BringToFront(); 
    foreach (Control control in categoryPanel.Controls) 
     control.BringToFront(); 
    categoryPanel.Show(); 

    // ... 
} 

,并为其他情况相反。 这些都不起作用。这是categoryPanel在选择类别节点时显示,但当选择menuItem节点时,屏幕显示空白区域。

我在做什么错?

回答

2

代码没有太大意义,重新排序面板中的控件不是你想要做的。也听起来,else子句中的代码失败了,你没有发布的代码。像这样做,而不是(猜测):

bool categorySelected = treeView1.SelectedNode.Name.Contains("cat"); 
menuItemPanel.Visible = !categorySelected; 
categoryPanel.Visible = categorySelected; 
+1

此代码对我的作品。仔细检查设计器文件,确定两个面板都位于同一拆分容器中,并且一个面板不在另一个面板内。 –

+2

好的一点,当你与设计师放弃第二个面板时会发生这种情况。使用视图+(其他窗口)+文档大纲并将第二个面板拖出第一个面板。 –

+0

我尝试了类似的东西,在我发布代码之前,我只是有if(... contains(“cat”)){menuItemPanel.Visible = false; categoryPanel.Visible = true;} else {.../*让我检查这个代码是否永远不会像你说的那样被调用,很快就会回来。 * /} – lowerkey

0

试试这个

if (treeView1.SelectedNode.Name.Contains("cat")) 
    { 
     menuItemPanel.Visible = false; 
     categoryPanel.Visible = true; 
    }