日期:2014-05-19  浏览次数:20742 次

关于treeview的问题(c#/winform)
在做一个winform的程序,界面比较简单。
大概是这样的:

左边放置一个treeview,右边放1个panel。
我怎么才能做到:通过点击不同的节点,在panel上面显示不同的内容。
就象注册表编辑器那样的。
我自己的想法是放好多的panel,点不同的节点,就显示不同的panel,
可是感觉不好。。
请教大家,我怎么才能作到这种效果呢。。
symantec   antivirus好象也是这种界面。

小弟新手,先谢谢大家了。。



------解决方案--------------------
响应TreeView事件。
如果是两个类,可以使用代理
使用过多的Panel,好像没什么必要吧,除非数量非常有限。可以动态刷新。
------解决方案--------------------
把不同的内容做成不同的控件
根据点击时的信息加载不同的控件,加载前先dispose先前加载的控件
放那么多panel不行,也不利于扩展
------解决方案--------------------
动态加载Panel里的控件

For 1 To 3
Dim tp As TabPage = New TabPage()
Dim rd1 As RadioButton = New RadioButton()
Dim rd2 As RadioButton = New RadioButton()
rd1.Text = "Model1 "
rd2.Text = "Model2 "
rd1.Location = New Point(10, 10)
rd2.Location = New Point(10, 30)

TabControl1.TabPages.Add( "File " & (numforNB + 1).ToString())
TabControl1.TabPages(numforNB).Controls.Add(rd1)
TabControl1.TabPages(numforNB).Controls.Add(rd2)
Next

上面是动态加载TabControl1里的RadioButton



------解决方案--------------------
我也是同样的问题,不过我的节点比较少,所以还是用的多个panel来显示.
------解决方案--------------------
netusemaster() ( ) 信誉:100 Blog 加为好友 2007-06-27 10:35:32 得分: 0


动态加载Panel里的控件

For 1 To 3
Dim tp As TabPage = New TabPage()
Dim rd1 As RadioButton = New RadioButton()
Dim rd2 As RadioButton = New RadioButton()
rd1.Text = "Model1 "
rd2.Text = "Model2 "
rd1.Location = New Point(10, 10)
rd2.Location = New Point(10, 30)

TabControl1.TabPages.Add( "File " & (numforNB + 1).ToString())
TabControl1.TabPages(numforNB).Controls.Add(rd1)
TabControl1.TabPages(numforNB).Controls.Add(rd2)
Next

上面是动态加载TabControl1里的RadioButton

===========正解=====================
改装成C#语法就可以了//




------解决方案--------------------
只要一个Panel
将Panel上要显示的东东做成一个个自制控件啊

TabControl1.TabPages(第一个页面).Controls.Add(你的自制控件);
------解决方案--------------------
添加一个splitContainer控件不就行了吗
------解决方案--------------------
左边treeview,加个splitContainer,右边listview就可以了

------解决方案--------------------
我记得有一个事件还是控件能用
------解决方案--------------------
不知道你要显示的是什么样的数据
---
如果是显示存储的数据的话 左边treeview,中splitContainer,右边listview 以treeview中的AfterSelect 事件 来完成数据显示
---
如果要显示当中是按照你自己的设计结构来实现的话 那就只能动态添加控件 也以事件来判定显示 或者少的话 就直接用tabControl 事件判断标签显示或隐藏
---
------解决方案--------------------
把自己的页面全部作为用户控件,然后右边的PANEL动态加载