c# winform treeview问题

treeview里追加节点时,由于数据量太大,现在出现的问题就是画面在读入数据加载treeview时,会出现刷屏现象,一闪一闪.现代码如下://root节点设定forea... treeview里追加节点时,由于数据量太大,现在出现的问题就是画面在读入数据加载treeview时,会出现刷屏现象,一闪一闪.现代码如下:
//root节点设定
foreach (string rootId in rootNodeList)
{
treeview.Nodes.Add(rootId , rootId );
}
//子节点设定
foreach (string node in rootNodeList)
{
treeview.SelectedNode = treeview.Nodes[node];
//递归取得该节点所有子节点
this.setNode(node);
}
//递归
private void setNode(string targetNodeDataId)
{
//相同根节点的节点集合取得
List<string> sameParentNodeIdList = getSameParentNodeIdList (targetNodeDataId);
foreach (string nodeId in sameParentNodeIdList)
{
treeview.SelectedNode =
treeview.Nodes.Find(targetNodeDataId, true)[0];
treeview.SelectedNode.Nodes.Add(nodeId , nodeId );
}
setNode(nodeId );
}
此方法是找到一个节点就追加一个,这样数据量大时,就会出现刷屏现象,一闪一闪,挺恶心,有没有好的方法可以实现就是,让所有数据节点都组织好了,一下子绑定到treeview上啊(动态追加treeview除外,因为不能用此方法,原因就不多说).
递归方法写错了,更正如下
private void setNode(string targetNodeDataId)
{
//相同根节点的节点集合取得
List<string> sameParentNodeIdList = getSameParentNodeIdList (targetNodeDataId);
foreach (string nodeId in sameParentNodeIdList)
{
treeview.SelectedNode =
treeview.Nodes.Find(targetNodeDataId, true)[0];
treeview.SelectedNode.Nodes.Add(nodeId , nodeId );
//递归
setNode(nodeId );
}
}
展开
 我来答
百度网友586e433
2011-08-16 · TA获得超过3491个赞
知道小有建树答主
回答量:1221
采纳率:0%
帮助的人:1441万
展开全部
TreeView tv = new TreeView();
try
{
tv.BeginUpdate();
// 添加节点
}
finally
{
tv.EndUpdate();
}
更多追问追答
追问
你好,感谢你的回答,用了这个方法后,treeview里面是不闪了,但是treeview控件的滚动条,就在那滚啊滚啊,很搞笑,如果设置Scrollable=false,那BeginUpdate();这个就不管用了好像,节点数据还是先加载进去了,我现在想在节点添加时,就是在上边递归时,能否加个进度条,等进度条加载完毕,节点也追加完毕,画面显示,具体做法能否给个详细的代码,我也在网上找了资料,我要详细的.我对这不懂,保证再给你20分
追答
可以先设置treeview的visible=false.加载完节点再设置visible=true.试试
我晚上抽空写写,练练手

给你粘贴了一段代码,
http://tieba.baidu.com/p/1179250268
新建一个Form,直接粘贴进去.和构造函数同级的位置就能运行.
用的是backgroundworker.
运行之前BeginUpdate 运行结束时 EndUpdate()

我试验了一下,如果treeview刷新太快,仍然会闪屏
医药互联网观察站
2011-08-16
知道答主
回答量:28
采纳率:0%
帮助的人:15.1万
展开全部
高见
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潘大森
2011-08-16 · TA获得超过246个赞
知道答主
回答量:371
采纳率:0%
帮助的人:51.9万
展开全部
使用beginupdate()和endupdate()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wlz805
2011-08-18
知道答主
回答量:21
采纳率:0%
帮助的人:8.4万
展开全部
学习了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式