关于TreeView加载问题

iceMung 2013-03-28 09:53:21
最近开发时遇到一个比较奇怪的问题,希望有高手帮忙解答一下,下面贴代码:


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,这是什么原因?
...全文
139 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceMung 2013-03-29
  • 打赏
  • 举报
回复
引用 3 楼 maji_lulu 的回复:
问题没发现, 有一点建议 TreeDatas datas = LoadData(); //从数据库获取数据 这行似乎写在TreeView变更之前更为合适,你说呢
恩,实际代码是在之前就获取数据了,这个代码有点类似伪代码,谢谢你的建议
maji_lulu 2013-03-29
  • 打赏
  • 举报
回复
问题没发现, 有一点建议 TreeDatas datas = LoadData(); //从数据库获取数据 这行似乎写在TreeView变更之前更为合适,你说呢
iceMung 2013-03-29
  • 打赏
  • 举报
回复
引用 1 楼 Mackz 的回复:
因为由于递归的原因你的BeginUpdate和EndUpdate没有配对。
是tree.ExpandAll()的问题,注释掉这一行就快了,但不理解为什么加入断点之后再F5,ExpandAll()操作就瞬间完成并正常显示。
菜牛 2013-03-28
  • 打赏
  • 举报
回复
因为由于递归的原因你的BeginUpdate和EndUpdate没有配对。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧