您的位置:程序门 -> .net技术 -> c#



winform(c#)关于treeview打开多个panel的问题,急!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


winform(c#)关于treeview打开多个panel的问题,急!
发表于:2008-01-22 10:18:31 楼主
我需要做一个小软件,用一个splitcontainner把form1界面分成左右。左边放一个treeview1,有四个主节点,没有子节点,把四个节点的text分别设成“0”,“1”,“2”,”3“。右边放了四个panel,并且dock都是fill.我想每次点击一个节点显示对应的一个panel的内容。我的程序如下:  
private   void   treeview1_afterselect   (objectsender,treevieweventargs   e)  
{  

switch(treeview1.selectednode.text.tostring())  
{  
case   "0":  

panel1.visible=true;  
panel2.visible   =   false;  
panel3.visible   =   false;  
panel4.visible   =   false;  
break;  

case   "1":  
panel2.visible=true;  
panel1.visible   =   false;  
panel3.visible   =   false;  
panel4.visible   =   false;  
break;  

case   "2":  
panel3.visible   =   true;  
panel1.visible   =   false;  
panel2.visible   =   false;  
panel4.visible   =   false;  
break;  
case   "3":  
panel4.visible   =   true;  
panel1.visible   =   false;  
panel2.visible   =   false;  
panel3.visible   =   false;  
break;  
}  
}  

但是每次执行时就只有点击第一个节点时第一个要显示的panel显示出来,点其它三个节点,没有反应,相应的panel不会被显示。请问,我这个小程序错在哪里,或者是缺少什么?多谢了,我对c#编程不熟,我郁闷好长时间了!能不能帮帮我?多谢了!

发表于:2008-01-22 10:19:081楼 得分:0
有做过这种软件的请告诉我好吗?小妹在此先谢了!或者有更好的想法也可以告诉我,因为我才c#不怎么样,多谢了!
发表于:2008-01-22 10:41:572楼 得分:0
请问有明白的吗?多谢了,在线等·!
发表于:2008-01-23 13:25:583楼 得分:0
这段代码没有问题...
请检查treeview1的node的text属性是否正确...

还有就是...你显示效果用的panel....你是怎么确定panel显示是否正确的...

另外...要注意的一点就是....在设置右边的4个panel时...别把panel拖到panel里面去了....
发表于:2008-01-23 13:46:414楼 得分:0
private   void   treeview1_afterselect(object   sender,   treevieweventargs   e)
                {
                        switch   (treeview1.selectednode.text.tostring())
                        {
                                case   "0":

                                        panel1.visible   =   true;
                                        panel1.dock   =   system.windows.forms.dockstyle.fill;
                                        panel2.dock   =   system.windows.forms.dockstyle.none;
                                        panel3.dock   =   system.windows.forms.dockstyle.none;
                                        panel4.dock   =   system.windows.forms.dockstyle.none;
                                        panel2.visible   =   false;
                                        panel3.visible   =   false;
                                        panel4.visible   =   false;
                                        break;

                                case   "1":
                                        panel2.visible   =   true;
                                        panel2.dock   =   system.windows.forms.dockstyle.fill;
                                        panel1.dock   =   system.windows.forms.dockstyle.none;
                                        panel3.dock   =   system.windows.forms.dockstyle.none;
                                        panel4.dock   =   system.windows.forms.dockstyle.none;
                                        panel1.visible   =   false;
                                        panel3.visible   =   false;
                                        panel4.visible   =   false;
                                        break;

                                case   "2":
                                        panel3.visible   =   true;
                                        panel3.dock   =   system.windows.forms.dockstyle.fill;
                                        panel2.dock   =   system.windows.forms.dockstyle.none;
                                        panel1.dock   =   system.windows.forms.dockstyle.none;
                                        panel4.dock   =   system.windows.forms.dockstyle.none;
                                        panel1.visible   =   false;
                                        panel2.visible   =   false;
                                        panel4.visible   =   false;
                                        break;
                                case   "3":
                                        panel4.visible   =   true;
                                        panel4.dock   =   system.windows.forms.dockstyle.fill;
                                        panel2.dock   =   system.windows.forms.dockstyle.none;
                                        panel3.dock   =   system.windows.forms.dockstyle.none;
                                        panel1.dock   =   system.windows.forms.dockstyle.none;
                                        panel1.visible   =   false;
                                        panel2.visible   =   false;
                                        panel3.visible   =   false;
                                        break;
                        }      

                }
发表于:2008-01-23 13:59:395楼 得分:0
case语句中不用设置visible属性吧,可以直接调用panelx.bringtofront()
显示panelx。
发表于:2008-01-23 14:01:136楼 得分:0
断点看看
发表于:2008-01-23 15:43:177楼 得分:0
defalut:
break;  
  应该有影响
发表于:2008-01-23 16:35:368楼 得分:0
你是不是   不小心把panel2、panel3、panel4添加到panel1里面了,作为panel1的子控件了
看看自动生成的代码


快速检索

热门点击