diff --git a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
index 0502d1a..662dbd1 100644
--- a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
+++ b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
@@ -409,6 +409,12 @@
Form
+
+ frmTreeSearchResult.vb
+
+
+ Form
+
frmViewsUser.vb
@@ -851,6 +857,9 @@
frmStructureNodeConfig.vb
+
+ frmTreeSearchResult.vb
+
frmViewsUser.vb
diff --git a/app/DD-Record-Organizer/frmConstructor_Main.vb b/app/DD-Record-Organizer/frmConstructor_Main.vb
index 9129a2d..ba056b7 100644
--- a/app/DD-Record-Organizer/frmConstructor_Main.vb
+++ b/app/DD-Record-Organizer/frmConstructor_Main.vb
@@ -673,20 +673,20 @@ Public Class frmConstructor_Main
Return Nothing
End Function
Dim NodesThatMatch As New List(Of TreeNode)
- Private Function SearchTheTreeView(ByVal TV As TreeView, ByVal TextToFind As String) As TreeNode
+ Private Function SearchTheTreeView(ByVal TV As TreeView, ByVal TextToFind As String) As List(Of TreeNode)
' Empty previous
NodesThatMatch.Clear()
' Keep calling RecursiveSearch
For Each TN As TreeNode In TV.Nodes
- If TN.Text = TextToFind Then
+ If TN.Text.Contains(TextToFind) Then
NodesThatMatch.Add(TN)
End If
RecursiveSearch(TN, TextToFind)
Next
If NodesThatMatch.Count > 0 Then
- Return NodesThatMatch(0)
+ Return NodesThatMatch
Else
Return Nothing
End If
@@ -6651,16 +6651,30 @@ Public Class frmConstructor_Main
End If
End Sub
-
Private Sub tstxtboxSearchNode_KeyUp(sender As Object, e As KeyEventArgs) Handles tstxtboxSearchNode.KeyUp
If e.KeyCode = Keys.Return Then
- If SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text) Is Nothing Then
+ Dim Result As List(Of TreeNode) = SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text)
+
+
+ If Result Is Nothing Then
MessageBox.Show("No Match Found")
Else
- TreeViewMain.SelectedNode = SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text)
+ If Result.Count = 1 Then
+ TreeViewMain.SelectedNode = Result.First()
+ Else
+ Dim resultForm As New frmTreeSearchResult()
+ resultForm.searchResultNodes = Result
+ resultForm.constructorForm = Me
+ resultForm.Show()
+ End If
End If
End If
End Sub
+
+ Public Sub SetSelectedTreeViewNode(node As TreeNode)
+ TreeViewMain.SelectedNode = node
+ End Sub
+
Private Sub tstxtboxSearchNode_Click(sender As Object, e As EventArgs) Handles tstxtboxSearchNode.Click, tstxtboxSearchNode.Enter
tstxtboxSearchNode.Text = ""
End Sub
diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb b/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb
new file mode 100644
index 0000000..c4365ab
--- /dev/null
+++ b/app/DD-Record-Organizer/frmTreeSearchResult.Designer.vb
@@ -0,0 +1,55 @@
+
+Partial Class frmTreeSearchResult
+ Inherits System.Windows.Forms.Form
+
+ 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
+
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Windows Form-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+
+ Private Sub InitializeComponent()
+ Me.listBoxResults = New System.Windows.Forms.ListBox()
+ Me.SuspendLayout()
+ '
+ 'listBoxResults
+ '
+ Me.listBoxResults.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.listBoxResults.FormattingEnabled = True
+ Me.listBoxResults.ItemHeight = 16
+ Me.listBoxResults.Location = New System.Drawing.Point(12, 12)
+ Me.listBoxResults.Name = "listBoxResults"
+ Me.listBoxResults.Size = New System.Drawing.Size(534, 228)
+ Me.listBoxResults.TabIndex = 0
+ '
+ 'frmTreeSearchResult
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(558, 258)
+ Me.Controls.Add(Me.listBoxResults)
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "frmTreeSearchResult"
+ Me.ShowIcon = False
+ Me.Text = "Gefundene Knoten"
+ Me.TopMost = True
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Friend WithEvents listBoxResults As ListBox
+End Class
diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.resx b/app/DD-Record-Organizer/frmTreeSearchResult.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/app/DD-Record-Organizer/frmTreeSearchResult.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/app/DD-Record-Organizer/frmTreeSearchResult.vb b/app/DD-Record-Organizer/frmTreeSearchResult.vb
new file mode 100644
index 0000000..7944226
--- /dev/null
+++ b/app/DD-Record-Organizer/frmTreeSearchResult.vb
@@ -0,0 +1,31 @@
+Public Class frmTreeSearchResult
+ Public searchResultNodes As List(Of TreeNode)
+ Public constructorForm As frmConstructor_Main
+
+ Private Sub frmTreeSearchResult_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ listBoxResults.Focus()
+
+ searchResultNodes.ForEach(Sub(resultNode)
+ listBoxResults.Items.Add(resultNode.Text)
+ End Sub)
+ End Sub
+
+ Private Sub listBoxResults_KeyUp(sender As Object, e As KeyEventArgs) Handles listBoxResults.KeyUp
+ If e.KeyCode = Keys.Escape Then
+ DialogResult = DialogResult.Cancel
+ Close()
+ End If
+ End Sub
+
+ Private Sub SetSelectedNode(nodeName As String)
+ Dim node = searchResultNodes.Find(Function(n As TreeNode)
+ Return n.Text = nodeName
+ End Function)
+ constructorForm.SetSelectedTreeViewNode(node)
+ End Sub
+
+ Private Sub listBoxResults_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listBoxResults.SelectedIndexChanged
+ Dim name As String = listBoxResults.SelectedItem
+ SetSelectedNode(name)
+ End Sub
+End Class
\ No newline at end of file