【发布时间】:2012-04-28 11:16:45
【问题描述】:
我知道通过添加 TreeView.BeginUpdate 将防止树视图闪烁,但是当我将它添加到我的项目中时,我的树视图的所有节点都消失了,任何人都可以告诉我为什么会发生,这里是代码 sn- p 我使用 TreeView.BeginUpdate 和 TreeView.EndUpdate 的地方
TreeNode treeNode = new TreeNode("Windows");
treeView1.Nodes.Add(treeNode);
//
// Another node following the first node.
//
treeNode = new TreeNode("Linux");
treeView1.Nodes.Add(treeNode);
//
// Create two child nodes and put them in an array.
// ... Add the third node, and specify these as its children.
//
TreeNode node2 = new TreeNode("C#");
TreeNode node3 = new TreeNode("VB.NET");
TreeNode[] array = new TreeNode[] { node2, node3 };
//
// Final node.
//
treeNode = new TreeNode("Dot Net Perls", array);
treeView1.Nodes.Add(treeNode);
【问题讨论】:
-
第一个看起来不正确 - 你在循环中执行
BeginUpdate/EndUpdate- 更糟糕的是,EndUpdate嵌套在一些条件代码中 - 我通常会这样做期望看到一些抑制视觉更新的东西被包裹在整个更新集中(根据你的第二个例子) -
尽管代码有问题,但您似乎正在尝试解决问题的症状。真正的问题是你为什么一开始会闪烁?还是没有闪烁?
-
如果我在添加节点的上方使用我的意思是(.Nodes.Add)就足够了吗??
-
@Jeremy Thompson 你的意思是第一名根本不需要包含更少的节点??但是任何使用它的方式都是最佳实践??
-
添加/分配您正在使用的根节点,仅在构建树之后。 IIRC 这要快得多。