当前位置: 代码迷 >> C# >> 需要用winform做个简单的erp,但是太菜请问几个小问题
  详细解决方案

需要用winform做个简单的erp,但是太菜请问几个小问题

热度:28   发布时间:2016-05-05 03:33:33.0
需要用winform做个简单的erp,但是太菜请教几个问题.
第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;
}

应该能看懂吧
  相关解决方案