誰も前にそれを尋ねませんでした:
ユーザーが「すべてを展開」したときTreeNode
に、WinFormsで特定のクラスの子孫が展開されないようにする効率的な方法は何ですか?TreeView
確かに は扱えますが、操作の場合のみ に設定するBeforeExpand
のは苦労します。どうすればこれを判断できるのだろうか?サブクラス化してオーバーライドできますが、それはオーバーライドできません...e.Cancel
true
ExpandAll
TreeView
ExpandAll
誰も前にそれを尋ねませんでした:
ユーザーが「すべてを展開」したときTreeNode
に、WinFormsで特定のクラスの子孫が展開されないようにする効率的な方法は何ですか?TreeView
確かに は扱えますが、操作の場合のみ に設定するBeforeExpand
のは苦労します。どうすればこれを判断できるのだろうか?サブクラス化してオーバーライドできますが、それはオーバーライドできません...e.Cancel
true
ExpandAll
TreeView
ExpandAll
標準の.NETツリービューには、説明した以外の方法がないようです.ExpandAllの前にフラグをトリガーし、BeforeExpandを処理し、フラグが有効になっているときに適切なノードに対してe.Cancelを有効にします.
ExpandAll メソッドは仮想ではないため、次の方法があります。
これは 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