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(窗口设计编辑器)中编码内容.....

转载于:https://www.cnblogs.com/liuxiaowei0543/archive/2013/05/24/3096844.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值