日期:2014-05-17  浏览次数:20807 次

关于TreeView加载问题
最近开发时遇到一个比较奇怪的问题,希望有高手帮忙解答一下,下面贴代码:


        private void LoadTree()
        {
            tree.BeginUpdate();
            try
            {
                tree.Nodes.Clear();
                TreeDatas datas = LoadData();       //从数据库获取数据
                TreeNode rootNode = tree.Nodes.Add(datas.Name);     //添加根节点
                AddChildren(rootNode, datas);       //递归添加子节点
            }
            finally
            {
                tree.EndUpdate();
                tree.ExpandAll();
            }
        }


上面的大致就是加载TreeView的代码(修改了部分代码以便大家阅读)。一共4000多条数据,如果正常运行程序,大概TreeView要10s-20s才能显示出来,但是只要在程序中任意处加入断点,比如红色部分,运行到断点马上按F5,TreeView就立刻加载完毕并显示,总共时间大概1s-2s,这是什么原因?
TreeView

------解决方案--------------------
因为由于递归的原因你的BeginUpdate和EndUpdate没有配对。
------解决方案--------------------
问题没发现,
有一点建议
TreeDatas datas = LoadData();       //从数据库获取数据
这行似乎写在TreeView变更之前更为合适,你说呢