最近开发时遇到一个比较奇怪的问题,希望有高手帮忙解答一下,下面贴代码:
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
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
解决方案 »
- 关于传递参数 既采用引用传递又赋予默认值
- 学习使用MyXls,结果报错
- 对称加密后的结果类似MD5这样的以数字+字母的格式
- C#子窗体和父窗体标题栏问题,在线等```
- 求C#WINDOWS里面的dateset 导出到excel
- 求一条语句:C#界面跳转问题。在线等
- 网页设计师是上辈子都是折翼的天屎 真正自动识别网页编码
- 為什麼C#中函數或方法不能有默認值?
- 如何像C语言中的#define 一样预先定义一些标志呢?具体内容请进来看看
- C# 16位灰度值数组转换为图像
- 操作SQL server2008 插入数据时出错,咋回事?
- LumiSoft.Net用pop3接收邮件,有些邮件接收时会产生异常,是什么原因呢?
是tree.ExpandAll()的问题,注释掉这一行就快了,但不理解为什么加入断点之后再F5,ExpandAll()操作就瞬间完成并正常显示。
有一点建议
TreeDatas datas = LoadData(); //从数据库获取数据
这行似乎写在TreeView变更之前更为合适,你说呢