Public Class frmStrukturSelect Dim m_selectiontype As TKB.VV.Lifecycle.clslifeCycle.SelectionType Property SelectionType As TKB.VV.Lifecycle.clslifeCycle.SelectionType Get Return m_selectiontype End Get Set(value As TKB.VV.Lifecycle.clslifeCycle.SelectionType) m_selectiontype = value End Set End Property Dim m_MultiSingle As TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType Property MultiSingle As TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType Get Return m_MultiSingle End Get Set(value As TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType) m_MultiSingle = value End Set End Property Dim m_singlenode As Integer Property SingleNode As Integer Get Return m_singlenode End Get Set(value As Integer) m_singlenode = value End Set End Property Public CheckedNodes As List(Of String) = New List(Of String) Dim clslc As New TKB.VV.Lifecycle.clslifeCycle Dim SourceNode As Integer = 0 Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub New(ByVal SelType As TKB.VV.Lifecycle.clslifeCycle.SelectionType, ByVal SingleMulti As TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType, Optional Currentnode As Integer = 0) InitializeComponent() Me.SelectionType = SelType Me.m_MultiSingle = SingleMulti Me.SourceNode = Currentnode End Sub Private Sub frmStrukturSelect_Load(sender As Object, e As EventArgs) Handles MyBase.Load If MultiSingle = TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType.MultiSelection Then clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt, False, True, 0) Else clslc.Load_Treestrukutr(Me.TreeStruktur, TKB.VV.Lifecycle.clslifeCycle.SelectionType.nur_eingesetzt, False, False, 1) End If Me.TreeStruktur.SelectedNode = Me.TreeStruktur.Nodes(0) Me.TreeStruktur.ExpandAll() 'Me.CheckedNodes.Clear() For Each s As String In Me.CheckedNodes Dim tn As New DevComponents.AdvTree.Node tn = clslc.FindNode_string(Me.TreeStruktur.Nodes, 0, s) tn.Checked = True Next Try Dim tn As New DevComponents.AdvTree.Node tn = clslc.FindNode(Me.TreeStruktur.Nodes, SourceNode, SourceNode) tn.Remove() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub TreeStruktur_BeforeCheck(sender As Object, e As DevComponents.AdvTree.AdvTreeCellBeforeCheckEventArgs) Handles TreeStruktur.BeforeCheck 'If Me.SelectionType = 1 Then ' 'MsgBox(Me.TreeStruktur.CheckedNodes.Count) ' Dim Allnodes As List(Of String) = New List(Of String) ' Dim subnodes As List(Of String) = New List(Of String) ' Dim i As Integer ' For Each n As DevComponents.AdvTree.Node In Me.TreeStruktur.SelectedNodes ' subnodes = GetChildren(n) ' For i = 0 To subnodes.Count - 1 ' AllNodes.Add(subnodes(i)) ' Next ' AllNodes.Add(n.Tag) ' Next ' For i = Allnodes.Count - 1 To 0 Step -1 ' Dim tn As New DevComponents.AdvTree.Node ' tn = clslc.FindNode(Me.TreeStruktur.Nodes, Allnodes(i), Allnodes(i)) ' tn.Checked = False ' Next 'End If End Sub Function GetChildren(parentNode As DevComponents.AdvTree.Node) As List(Of String) Dim nodes As List(Of String) = New List(Of String) GetAllChildren(parentNode, nodes) Return nodes End Function Sub GetAllChildren(parentNode As DevComponents.AdvTree.Node, nodes As List(Of String)) For Each childNode As DevComponents.AdvTree.Node In parentNode.Nodes nodes.Add(childNode.Tag) GetAllChildren(childNode, nodes) Next End Sub Private Shared Iterator Function AllNodes(ByVal nodes As DevComponents.AdvTree.NodeCollection) As IEnumerable For i As Integer = 0 To nodes.Count - 1 Dim node As DevComponents.AdvTree.Node = nodes(i) Yield node If node.Nodes.Count > 0 Then Try For Each item As DevComponents.AdvTree.Node In AllNodes(node.Nodes) Yield item Next item Catch End Try End If Next i End Function Private Sub TreeStruktur_DoubleClick(sender As Object, e As EventArgs) Handles TreeStruktur.DoubleClick If MultiSingle = TKB.VV.Lifecycle.clslifeCycle.SingleMultiSelectionType.SingleSelection And clslc.IstStruktur(Me.TreeStruktur.SelectedNode.Tag) = False Then Me.SingleNode = Me.TreeStruktur.SelectedNode.Tag Me.DialogResult = Windows.Forms.DialogResult.OK Me.Close() End If End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub Private Sub TreeStruktur_NodeClick(sender As Object, e As DevComponents.AdvTree.TreeNodeMouseEventArgs) Handles TreeStruktur.NodeClick If Me.TreeStruktur.SelectedNode.Checked = True Then Me.CheckedNodes.Add(Me.TreeStruktur.SelectedNode.Text) Else For i As Integer = CheckedNodes.Count - 1 To 0 Step -1 If CheckedNodes(i) = Me.TreeStruktur.SelectedNode.Text Then CheckedNodes.Remove(i) Exit Sub End If Next End If End Sub End Class