首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么利用点击Treeview中每一个节点,右边SplitContainer中Panel显示相对应的窗体,求

2012-04-13 
如何利用点击Treeview中每一个节点,右边SplitContainer中Panel显示相对应的窗体,急求!如何利用点击Treevie

如何利用点击Treeview中每一个节点,右边SplitContainer中Panel显示相对应的窗体,急求!
如何利用点击Treeview中每一个节点,右边SplitContainer中Panel显示相对应的窗体,我只知道在afterselect事件里做,可是点击每一个节点,都显示第一个节点对应的窗体,请各位好心人帮忙,如有类似列子更好,谢谢!

[解决办法]

C# code
public class Form1 {         SplitContainer sp = new SplitContainer();     TreeView tree = new TreeView();         private void Form1_Load(object sender, System.EventArgs e)     {         tree.Nodes.Add("Form1");         tree.Nodes.Add("Form2");         tree.Nodes.Add("Test");         sp.Panel1.Controls.Add(tree);         tree.Dock = DockStyle.Fill;         this.Controls.Add(sp);         sp.Dock = DockStyle.Fill;         tree.AfterSelect += AfterSelect;     }         private void AfterSelect(object sender, TreeViewEventArgs e)     {         sp.Panel2.Controls.Clear();         switch (e.Node.Text) {             case "Form1":                 Form frm = new Form();                 frm.Text = e.Node.Text;                 frm.TopLevel = false;                 sp.Panel2.Controls.Add(frm);                 frm.Show();                 break;             case "Form2":                 Form frm = new Form();                 frm.Text = e.Node.Text;                 frm.TopLevel = false;                 sp.Panel2.Controls.Add(frm);                 frm.Show();                 break;             default:                 Form frm = new Form();                 frm.Text = "Test";                 frm.TopLevel = false;                 sp.Panel2.Controls.Add(frm);                 frm.Show();                 break;         }     }     }
[解决办法]
想到的实现类似功能的几种方式,供参考,也许下面的方式更适合达到目的
----------------------------------
1.使用TabControl
右边放置TabControl。使用不同的TabPage显示对应的数据。可以调整界面不让显示TabPage突出来的选项卡头。 
2.使用Control进行Z轴排列
使用Control.BringToFront 方法来在Z轴方向上进行显示调整。也就是说右边是好多控件件比如(Panel)按Z轴进行重叠,根据左边进行显示调整。
如果想使用窗体,可以把窗体添加到容器中,以下是实例代码,
//WinForm嵌入panel
Form2 form = new Form2();
form.FormBorderStyle = FormBorderStyle.None;
form.TopLevel = false;
this.panel1.Controls.Add(form);
form.Show(); 
3.使用第三方组件
一般的第三方的WindowsForms组件都提供了DockPanel的组件,功能方式就像VS IDE中的开发界面,可以进行灵活拖动,停靠以及独立窗口显示。
推荐一款用的比较多的开源组件,
dock panel suite,以下是网站地址,提供完整示例和源代码,
http://sourceforge.net/projects/dockpanelsuite/

===============================================
以上实现对右边的对象进行惰性加载性能会更好。

热点排行