比如窗口左边是Tree,右边根据Tree的不同事件,显示不同的子窗口 每个子节点定义好相应的NavigationUrl(记得不是很清楚),即可实现点击跳转 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/AD/Topic_Top.aspxpublic 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嵌入panelForm2 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/===============================================以上实现对右边的对象进行惰性加载性能会更好。 socket 并发处理,当客户端频繁刷新的请求,出现无法连接 各位高手帮忙看看,小女子感激不尽 为什么GridView运行后只显示最后一行 求教WCF高手? 数据上传 主窗体隐藏后显示的附窗体 怎么将副窗体的值传到主窗体 我一直很困惑,我是否能在.aspx.cs文件中使表单提交? 多线程界面失去响应的问题! 总物理内存为16g。c#如何缓存8g的文件到内存中?memorystream? 微软报表rdlc页面高度 多线程识别图像时,在识别方法中进行灰度化时出现位图区域已被锁定的异常? datagrid和窗体控件怎么绑定? C#中怎么控制输入长度
{
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/===============================================
以上实现对右边的对象进行惰性加载性能会更好。