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

iamfigocl 2008-03-19 10:20:19
如何利用点击Treeview中每一个节点,右边SplitContainer中Panel显示相对应的窗体,我只知道在afterselect事件里做,可是点击每一个节点,都显示第一个节点对应的窗体,请各位好心人帮忙,如有类似列子更好,谢谢!
...全文
598 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hf199054 2012-04-09
  • 打赏
  • 举报
回复
还不错,看看
hf199054 2012-04-09
  • 打赏
  • 举报
回复
还不错,看看
flowermix 2008-12-19
  • 打赏
  • 举报
回复
看着c#的自己研究vb。。。。
请叫我低调 2008-06-02
  • 打赏
  • 举报
回复
不错 学习了
iamfigocl 2008-03-28
  • 打赏
  • 举报
回复
感谢大家的帮忙,祝你们好运!结贴去了
wzuomin 2008-03-23
  • 打赏
  • 举报
回复
dock panel suite有vb的吗?
marvelstack 2008-03-23
  • 打赏
  • 举报
回复
想到的实现类似功能的几种方式,供参考,也许下面的方式更适合达到目的
----------------------------------
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/

===============================================
以上实现对右边的对象进行惰性加载性能会更好。
扑通 2008-03-22
  • 打赏
  • 举报
回复
这个问题我以前用了一个很笨的办法,就是点击以后激活一个timer控件,再用timer控件的方法来实现(执行一次以后记得马上停止timer)。
wzuomin 2008-03-22
  • 打赏
  • 举报
回复

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;
}
}

}
liqngjun123 2008-03-22
  • 打赏
  • 举报
回复
左键点击用SelectedNode应该没问题的;右键点击的话需要在OnMouseDown中将SelectedNode置为当前鼠标击中的节点(可用GetHitTest获取)。
lvfeng180 2008-03-21
  • 打赏
  • 举报
回复
在page_load中
加上if (!Page.ispostback())
{
加载树节点的代码
}
iamfigocl 2008-03-21
  • 打赏
  • 举报
回复
大家帮帮忙啊!!!
dancingbit 2008-03-19
  • 打赏
  • 举报
回复
贴出现在的代码

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧