txt Suche entschärfen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von knuepel.

    txt Suche entschärfen

    Hallo,

    ich habe den unten stehenden Quell Code, dieser sucht in einen Ordner (C:\) Verknüpfungen ab. Der Namen der Verknüpfung, die gesucht werden soll, wird in einer Textbox eingeben. das Erfolgreiche Suchergebnis in einer Listbox angezeigt.
    Nun mein Problem, der Name der Verknüpfung muss 100% richtig geschrieben werden. Gibt es die Möglichkeit das zu Entschärfen, kann bei Eingabe der ersten Buchstaben oder bei fast richtiger Eingabe des Namen, eine Auswahl in der Listbox angezeigt werden?. Vergleichbar wie bei der Suche im Suchfeld im Datei Explorer.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Const BASEFOLDER = "C:"
    3. Dim objShell As Object = CreateObject("Wscript.Shell")
    4. Dim foundFiles As Hashtable
    5. Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    6. foundFiles = New Hashtable
    7. lbResults.Items.Clear()
    8. btnSearch.Enabled = False
    9. SearchFiles(txtSearch.Text, BASEFOLDER, foundFiles)
    10. btnSearch.Enabled = True
    11. If foundFiles.Count > 0 Then
    12. For Each itm As String In foundFiles.Keys
    13. lbResults.Items.Add(itm)
    14. Next
    15. Else
    16. MsgBox("Es wurden keine 'Links' mit diesem Namen gefunden!", vbExclamation)
    17. End If
    18. End Sub
    19. Sub SearchFiles(strText As String, strPath As String, ByRef col As Hashtable)
    20. Try
    21. If Directory.Exists(strPath) Then
    22. Dim files As String() = Directory.GetFiles(strPath, strText & , SearchOption.AllDirectories)
    23. If files.Count > 0 Then
    24. For Each f As String In files
    25. col.Add(f, objShell.CreateShortCut(f).TargetPath)
    26. Next
    27. End If
    28. End If
    29. Catch ex As Exception
    30. Process.Start(foundFiles.Item(lbResults.SelectedItem))
    31. Catch ex As Exception
    32. MsgBox(ex.Message, vbCritical)
    33. End Try
    34. End If
    35. End Sub
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „knuepel“ ()

    Wenn du dir mal Directory.GetFiles im MSDN anschaust
    msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

    bei Parameters

    searchPattern
    Type:
    System.String

    The search string to match against the names of files in path.
    This parameter can contain a combination of valid literal path and
    wildcard (* and ?) characters (see Remarks), but doesn't support regular
    expressions.


    Also schauen wir nach was dazu was in den Remarks steht, danach sollte klar sein wie das geht. ;)

    VB.NET-Quellcode

    1. Dim files As String() = IO.Directory.GetFiles("D:\", "*TextToFind*", IO.SearchOption.AllDirectories)
    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eddy“ ()

    @Eddy Jou.
    @knuepel Problematisch ist nur, dass auch das Suchmuster stimmen muss. Teste mal den ersten Buchstaben und die Extension:

    VB.NET-Quellcode

    1. Dim files As String() = IO.Directory.GetFiles("D:\", "A*.EXTENSION", IO.SearchOption.AllDirectories)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für eure Hilfe,
    leider werden bei beiden Versuchen keine Verknüpfungen gefunden :(

    Beim Quellcode:

    VB.NET-Quellcode

    1. ​Dim files As String() = Directory.GetFiles("D:\", "*" & ".lnk", SearchOption.AllDirectories)

    werden alle Verknüpfungen angezeigt.
    Beim Quellcode:

    VB.NET-Quellcode

    1. ​Dim files As String() = Directory.GetFiles("D:\", "A*" & ".lnk", SearchOption.AllDirectories)

    werden nur die Verknüpfungen mit A am Anfang angezeigt.

    Gruß
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „knuepel“ ()

    In den Remarks auf der MSDN Seite steht doch * = Wildcard. * steht fuer 0 oder mehr vorkommen belieber Zeichen. Mach daraus mal *a*.lnk.

    Da du TextBox-Eingaben nutzt waere es so zu empfehlen.

    VB.NET-Quellcode

    1. Dim files As String() = IO.Directory.GetFiles("D:\", String.Format("{0}{1}{0}", "*", TextBoxFilter.Text), IO.SearchOption.AllDirectories)

    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eddy“ ()

    Perfekt, Danke für eure Hilfe. Das Forum ist einfach super, hier wird mir immer geholfen.


    Eddy schrieb:

    Da du TextBox-Eingaben nutzt waere es so zu empfehlen.

    VB.NET-Quellcode

    1. Dim files As String() = IO.Directory.GetFiles("D:\", String.Format("{0}{1}{0}", "*", TextBoxFilter.Text), IO.SearchOption.AllDirectories)


    Danke Eddy, das war die Lösung!!!
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(