我在WinForm应用程序中有一个TreeView
,并且正在使用add
,reorder
和delete
方法添加新节点,对现有节点重新排序并删除旧注释。
有时,当我添加一个新项目时,它确实会立即在TreeView
中显示为net,但是当我添加下一个节点时,它会正确显示。它似乎是随机发生的,因此很难找到根本原因。
即使节点未在UI中正确显示,节点数也是正确的。
TreeView1.BeginUpdate();
TreeView1.Nodes.Add("P1", "Parent");
foreach(User u in items)
{
if( condition)
{
node.Text =u.sNodeText;
node.Tag = u;
node.Text = u.sNodeText;
GetChildren(node);
TreeView1.Nodes["P1"].Nodes.Add((TreeNode)node.Clone());
}
}
TreeView1.ExpandAll();
TreeView1.EndUpdate();
TreeView1.Refresh();
谁能回答这个问题?我认为这个问题并非毫无意义。
这是GetChildren方法。
private void GetChildren(TreeNode node)
{
TreeNode Node = null;
User nodeCat = (User)node.Tag;
foreach (User cat in items)
{
if (cat.sParentID == nodeCat.sID)
{
Node = node.Nodes.Add(cat.sNodeText);
Node.Tag = cat;
GetChildren(Node);
}
}
最佳答案
您是否尝试过Invalidate()
与Refresh()
?刷新仅重绘客户区域,而无效则重绘整个控件。只是黑暗中的一枪...我以前从未遇到过这个问题。