以前没人问过:
当用户执行"Expand all“操作,但仍然允许用户通过单击+符号来展开这些节点时,有什么有效的方法可以避免在WinForms TreeView中展开某些TreeNode类的后代?
当然我可以处理BeforeExpand,但是只有当它是一个ExpandAll操作时,我才很难将e.Cancel设置为true。我想知道我如何才能确定这一点?我可以子类化TreeView并覆盖ExpandAll --但它不能被覆盖……
发布于 2011-08-19 20:36:22
这是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发布于 2011-08-04 18:22:10
看起来标准的.NET树形视图并不像你所描述的那样:在ExpandAll之前触发标志,处理BeforeExpand,并在标志被启用时为适当的节点启用e.Cancel。
由于ExpandAll方法不是虚拟的,您可以遵循以下方法:
https://stackoverflow.com/questions/6772769
复制相似问题