【发布时间】:2012-07-02 10:33:47
【问题描述】:
我在 WinForm 应用程序中有一个TreeView,我正在使用add、reorder 和delete 方法来添加新节点、重新排序现有节点和删除旧注释。
有时当我添加一个新项目时,它会立即在TreeView 中显示,但是当我添加下一个节点时它确实正确显示。这似乎是随机发生的,因此很难找到根本原因。
即使节点没有在 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);
}
}
【问题讨论】:
-
反对者:解释为什么这个问题不好会更有帮助。
-
能否请您向我们展示
GetChildren方法的代码,以便我们重现这种奇怪的行为并提供解决方案。 @tenfour 这个问题很糟糕,因为它非常主观并且没有复制示例。顺便说一句,我没有投反对票。
标签: c# windows winforms treeview