在winform中部分切断节点TreeView
我在解决这个问题有什么问题。我一直在搜索,并没有找到这个问题的很多解决方案。我发现的唯一“解决方案”是一个破解,然后崩溃最后一个节点。在winform中部分切断节点TreeView
this.Nodes[this.Nodes.Count - 1].Expand();
this.Nodes[this.Nodes.Count - 1].Collapse();
你可以从这个屏幕上看到拍摄的最后一个节点被部分切断,只有这样,才能揭露它是扩大这将导致TreeView的正确重新呈现自身的节点。
我务实添加节点到TreeView。我不知道这是否会影响结果,但是我已经将TreeView扩展到了我自己的类中,因此我可以添加一些属性和方法。
public class MyTreeView : TreeView
{
public void BuildTree()
{
this.Nodes.Clear();
foreach (TestSetFolder folder in Folders)
{
MyTreeNode node = new MyTreeNode();
node.Name = folder.Name;
node.Text = folder.Name;
node.Tag = folder;
node.FolderID = folder.NodeID;
node.IsPopulated = false;
this.Nodes.Add(node);
}
}
}
这就是我如何将节点添加到列表中。有没有人有这个问题的干净解决方案?
使用treeView.BeginUpdate()
和treeView.EndUpdate()
之前任何视觉上的变化后:试试这个:
TreeNode rootNode = treeView1.Nodes[0];
TreeNode lastNode = rootNode.Nodes[rootNode.Nodes.Count - 1];
lastNode.EnsureVisible();
或者使用来自MSDN文章的例子中得到的最后一个节点。
SuspendLayout()和ResumeLayout()也很有用!
如果您想更新UI,请不要一次添加所有节点!逐个添加,夹在begin和endupdate调用之间。
谢谢!这工作。树正在构建时,我的UI不再更新,但树现在看起来正确。 – Smeiff
查看TreeNode类中的Expand方法。见http://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.aspx
在我原来的问题中,我说过我已经使用了expand,接着是collapse,这解决了我的问题。这不是我正在寻找的解决方案。我想知道为什么该项目首先被切断。我不想进行展开,折叠的原因是因为在展开时,它会查询该节点内的内容的API。我这样做,以节省初始加载时间,否则负载将永远 – Smeiff
您可以调用的问题上EnsureVisible
的TreeViewNode,就像这样:
treeView1.Nodes[treeView1.Nodes.Count - 1].EnsureVisible();
检查MSDN entry此方法以获得更多信息。
编辑:
我想我找到了它。您可能有一个根节点,并且您想要滚动到视图中的节点是该根节点的子节点。
TreeNode lastNode = treeView1.Nodes[treeView1.Nodes.Count - 1].
Nodes[treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Count - 1];
Upvoted让你可以上传你的图片.. – stuartd
谢谢。我已经添加了图像! – Smeiff