例如我现在在一个主窗口列表中,打开一个子窗口(子窗口是一棵树).假如主窗口是一个商品列表,子窗口是关于商品类别的树,现在为每个商品选择一个类别,由于商品类别比较多,有一千多种,每次为一个商品选择一个类别时,弹出的子窗口都要load一千多个类别的树,这样的速度就很慢.不知道有没有什么办法改进呀...    我自己有个想法,大家赐教赐教呀.
    就是,我想在load主窗口的时候,顺便load这颗树,把它放在一个隐藏的Panel里面,然后在每次选择类别的时候,也就是在弹出子窗口的时候,把这个Panel从主窗口做为参数传到子窗口,这样的话,这颗树就只是load一次,不用每次点击弹出都load一次.
    不过暂时没有实现,这个参数传送有点问题.    大家有没有什么想法赐教一番呀.   运行环境: vs2003 + sql

解决方案 »

  1.   

    1.一次读取数据库生成树
    2.只读取数据库2层,在需要时再加载.
    对于你说每次都加载你可以使用单例
    自已定义一个类负责加载树,再用一个方法来创建.
    interface ITree
    {
        bool IsLoad{get;}
        TreeNodeCollection getNodes();
        void Release();
    }public class Tree:ITree
    {
        public Tree(){}
        protected bool isLoad=false;
        public bool IsLoad{get{return isLoad;}set{isLoad=value;}}
        protected TreeNodeCollection nodes=null;
        protected TreeNodeCollection Load()
        {
            isLoad=true;
             //自己实现吧
        }
        public TreeNodeCollection getNodes()
        {
            if(!isLoad)
               nodes=Load();
            return nodes;
        }
        public void Release()
        {
            isLoad=false;
            nodes.Clear();
        }
    }public class TreeFactory
    {
        private static ITree tree=new Tree();
        private TreeFactory(){}
        public static ITree getInstance()
        {
           return tree;
        }
    }