【问题标题】:Repositioning SelectedNode After Reordering TreeView Nodes in AfterLabelEdit Event在 AfterLabelEdit 事件中重新排序 TreeView 节点后重新定位 SelectedNode
【发布时间】:2014-06-17 10:14:18
【问题描述】:

This was a very helpful link 用于在 AfterLabelEdit 事件中对 TreeView 节点进行排序。它工作得很好。唯一的问题是它将 SelectedNode 和 TopNode 更改为 Root。我怎样才能让它成为最初选择的节点(现在有一个新的文本值)并且 TopNode 设置为排序前的状态?

这是我的代码现在的样子:

Private Sub tvInventory_AfterLabelEdit(sender As Object, e As System.Windows.Forms.NodeLabelEditEventArgs) Handles tvInventory.AfterLabelEdit
        tvInventory.BeginInvoke(New MethodInvoker(AddressOf tvInventory.Sort))
        e.CancelEdit = False
End Sub

我尝试添加代码以在 AfterLabelEdit 事件处理程序中设置 tvInventory.SelectedNode 和 tvInventory.TopNode 值,但它们被忽略了。

【问题讨论】:

    标签: .net winforms events treeview


    【解决方案1】:

    答案一直盯着我看!使用相同的 BeginInvoke 方法在 AfterLabelEdit 事件处理程序之外恢复我的位置!最终代码如下所示:

    Private Sub tvInventory_AfterLabelEdit(sender As Object, e As System.Windows.Forms.NodeLabelEditEventArgs) Handles tvInventory.AfterLabelEdit
        SaveMyPlace()
        tvInventory.BeginInvoke(New MethodInvoker(AddressOf tvInventory.Sort))
        tvInventory.BeginInvoke(New MethodInvoker(AddressOf RestoreMyPlace))
        e.CancelEdit = False
    End Sub
    
    Private Sub SaveMyPlace()
        SavedSelectedNode = tvInventory.SelectedNode
        SavedTopNode = tvInventory.TopNode
    End Sub
    
    Private Sub RestoreMyPlace()
        tvInventory.SelectedNode = SavedSelectedNode
        tvInventory.TopNode = SavedTopNode
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多