之前没有人问过:
当用户执行“全部展开”操作时,什么是避免WinForms TreeNode
中某些TreeView
类后代扩展的有效方法,但仍然允许他通过单击扩展此类节点+符号?
当然我可以处理BeforeExpand
,但我很难将e.Cancel
设置为true
,只要它是ExpandAll
操作。我想知道我怎么能确定这个?我可以继承TreeView
并覆盖ExpandAll
- 但是那个不能被覆盖......
答案 0 :(得分:1)
似乎标准.NET树视图没有你所描述的方式:在ExpandAll之前触发标志,处理BeforeExpand并在启用标志时为适当的节点启用e.Cancel。
由于ExpandAll方法不是虚拟的,因此您可以采用以下方法:
答案 1 :(得分:0)
这100%有效。我认为。叹息。
Private Sub MyTreeViewExpandNodes(ByVal Nodes As TreeNodeCollection)
For Each Node As TreeNode In Nodes
If Not (TypeOf Node Is SpecialTreeNode) Then
Node.Expand()
MyTreeViewExpandNodes(Node.Nodes)
End If
Next
End Sub
Private Sub MyTreeView_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyTreeView.KeyDown
If e.KeyCode = Keys.Multiply Then
e.Handled = True
e.SuppressKeyPress = True
MyTreeViewExpandNodes(MyTreeView.Nodes)
End If
End Sub