第1个就是 我左边加了个treeview 然后想点击treeview里的节点再右边tabcontrol里显示一个页面,然后我的那个页面是动态加载的用了usercontrol,但是 我就是说只能打开一个,不知道怎么让其他的也能点击下显示出来



private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
foreach (TabPage page in this.tabControl1.TabPages)
{
if (page.Name == "部门")
{
this.tabControl1.SelectedTab = page;
break;
}
if (this.treeView1.SelectedNode.Name == "部门")
{
UserControl1 u = new UserControl1();
TabPage tp = new TabPage("部门");
tp.Name = "部门";
tp.Controls.Add(u);
this.tabControl1.Controls.Add(tp);
this.tabControl1.SelectedIndex = this.tabControl1.TabPages.Count - 1;
}
}
}
说白了我就是想点击 部门人员客户等等节点都都能显示一个页面!
第2个问题是我再点节点显示页面是有个判断,就是原来如果存在那就跳那页,如果不存在就打开个(我现在是不能判断一直会增加新的一页。。。)
------解决思路----------------------
Dictionary<int, TabPage> tab = new Dictionary<int, TabPage>();
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (this.treeView1.SelectedNode.Tag != null)
{
// 不会重复new
if (!tab.ContainsKey(Convert.ToInt32(this.treeView1.SelectedNode.Tag)))
{
UserControl1 f = new UserControl1();
TabPage tb = new TabPage(this.treeView1.SelectedNode.Tag.ToString());
tb.Name = this.treeView1.SelectedNode.Tag.ToString();
tb.Controls.Add(f);
tabControl1.TabPages.Add(tb);
tab.Add(Convert.ToInt32(this.treeView1.SelectedNode.Tag), tb);
}
// 点那个显示哪个
TabPage ff = tab[Convert.ToInt32(this.treeView1.SelectedNode.Tag)];
this.tabControl1.SelectedTab = ff;
}
}
------解决思路----------------------
new Dictionary<string TabPage> tab = new Dictionary<string TabPage>();
//创建页卡
TabPage tp;
if (! tab.TryGetValue("部门", out tp)) //读取已保存的页卡
tp = new TabPage(); //没有创建过就建一个
tab.Add("部门", tp); //保存起来
}
tp.Parent = tabControl1; //把他放到容器里
//隐藏页卡
TabPage tp;
if (tab.TryGetValue("部门", out tp)) //读取已保存的页卡
{
tp.Parent = NULL;
}
应该能看懂吧