panel 与treeview控件的结合实现tablecontrol功能

首先,我十分高兴能成为博客园的一员。有朋自远方来,不亦乐乎@广大编程爱好者们!!!

最近在软件开发中,遇到了这样一个问题:panel 与treeview控件的结合实现tablecontrol功能,一直不能实现。经过咨询,以及查询资料,终于有了新认识,和大家分享一下,莫见笑。

在这里重点涉及到了控件嵌套(父子关系)的问题,我们把panel们全部摞在一起,这里也就只显示了最上一层的panel内容,我的想法是通过激活treeview控件的节点来实现panel的交换显示。在这里特别注意的是:这些panel彼此之间并非独立的,而是存在嵌套(父子关系的)。我们解决的就是把这些panel控件设置为独立关系。这样就可以很容易的实现各个panel的交换显示了。

第一部分:改变各个panel的嵌套关系为独立关系

我们在XXXX.desiger.cs(窗口设计编辑器)中,改变他们的关系:

 // main_panel
this.main_panel.Controls.Add(this.panel1);
            this.main_panel.Controls.Add(this.panel2)

在这里就实现了panel1,panel2,是main_panel的子窗体,位于其上面了。

第二部分:利用treeview的节点选择来实现panel的显示、隐藏(以下是一个小例子)

 在XXXX.AfterSelect(object sender, TreeViewEventArgs e)

    {

        showPanel(int level, string name);

    }

private void showPanel(int level, string name)
        {
           foreach (Control c in panel_main.Controls)
                {
                    c.Visible = false;
                }

          switch (level)
                {
                    case 0:
                        panel_MEquipGeneralAtt.Visible = true;
                        break;
                    case 1:
                        panel_MEquipGeneralAtt.Visible = true;
                        break;
                    case 2:
                        panel_RingGeneral.Visible = true;
                        break;
                  }

          }

最后,收获最大的地方是:学会手动去改动XXXX.desiger.cs(窗口设计编辑器)中编码内容.....

posted @ 2013-05-24 14:33  麦田的守望者(0543)  阅读(483)  评论(0编辑  收藏  举报