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