【问题标题】:C# Treeview doesn't refresh after moving nodes移动节点后 C# Treeview 不刷新
【发布时间】:2011-04-11 22:16:21
【问题描述】:

在我的 Windows 应用程序中,我有一个树视图。我制作了 custum 按钮来向下移动节点。这是单击按钮时发生的情况:

Node destNode = tvCategories.SelectedNode.NextNode;
Node srcNode = tvCategories.SelectedNode;
Node parentNode = srcNode.Parent;

// Switch nodes
parentNode.Nodes[destNode.Index] = srcNode;
parentNode.Nodes[srcNode.Index] = destNode;

代码运行良好,但我的树视图没有更新。我没有看到节点的切换。

tvCategories.Refresh()tvCategories.Invalidate()tvCategories.Update() 不起作用。

有人知道如何解决这个问题吗?

PS:我正在使用 DevComponents 的第 3 方树形视图。

【问题讨论】:

  • 你试过Application.DoEvents() 吗?
  • 你建议把那条线放在哪里?
  • 点击操作结束时的@Martjin

标签: c# winforms treeview


【解决方案1】:

在树视图上设置焦点将导致刷新,正如我发现的那样 通过使用

TreeView.Focus()

【讨论】:

    【解决方案2】:

    您可以尝试删除一个节点并重新插入:

    Node destNode = tvCategories.SelectedNode.NextNode;
    // Check for null (what happens, if the last node is selected?)
    
    // Switch nodes
    destNode.Parent.Nodes.Remove( destNode );
    destNode.Parent.Nodes.Insert( tvCategories.SelectedNode.Index, destNode );
    

    【讨论】:

    • 感谢这种方式它工作得很好:)(你的代码中有一个小错误,它是 destNode.Parent.Nodes.Remove())
    • @tanascius 我通常不这样做,但我完全被困住了,你能帮我解决这个相关问题吗:stackoverflow.com/questions/26588519/… 谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多