2016-07-14 5 views
0

Hier wird, wenn wir Ordnernamen in input.text eingeben, dann wird es für diesen Ordner in D-Laufwerk suchen und das Rück seinen Weg in Path.text. es funktioniert gut für den einzelnen Namen eingegeben in input.text , aber ich möchte mehrere Ordnername zur Zeit in input.text suchen und wollen seinen Pfad in Path.text.Suche mehrere Wert durch eine Textbox

zum Beispiel:

ABC, EFG, XYZ

diese drei Werte i in input.text eingegeben

private void button1_Click (object sender, EventArgs e) 
{ 

    string[] dirs = Directory.GetDirectories(D:\, input.Text + "*", SearchOption.AllDirectories); 

    foreach (string dir in dirs) 
    {  
     Path.Text =dir.ToString(); 
    } 
} 
+0

Haben Sie bereits versucht, den Text "ABC, EFG, XYZ" (und beliebig viele weitere Texte) aufzuteilen, das Ergebnis durchzuschleifen und die Verzeichnisse entsprechend zu überprüfen? OK, dies könnte zu Duplikaten in Fällen führen, in denen ein Verzeichnis mehreren Strings entspricht, aber dies kann danach behandelt werden ... – Tyron78

+0

Vorsicht! Die Option 'SearchOption.AllDirectories' kann eine Ausnahme auslösen, wenn Sie nicht über die Rechte verfügen, auf einige Verzeichnisse zuzugreifen. –

Antwort

2

Versuchen Sie Folgendes: Zuerst alle eingegebenen Verzeichnisse aufteilen dann für jeden einzelnen Eintrag rufen Sie Ihre Funktion. Und um mehr Text zu Ihrem TextBox hinzufügen verwenden +=

private void button1_Click (object sender, EventArgs e) 
{ 

    string [] individualDirs = input.Text.Split(','); 

    foreach (string one_dir in individualDirs) 
    { 

     string[] dirs = Directory.GetDirectories(@"D:\", one_dir + "*", SearchOption.AllDirectories); 

     foreach (string dir in dirs) 
     { // to add more Text to your TextBox use += 
      Path.Text += dir.ToString() + Environment.NewLine; 
     } 
    } 
} 

Eine andere Möglichkeit auch Linq verwenden könnte und tut es in einem Schlag:

string [] individualDirs = input.Text.Split(','); 

List<string> dirslinq = individualDirs.SelectMany(x => Directory.GetDirectories(@"C:\", x + "*", SearchOption.AllDirectories)).ToList(); 

Path.Text = String.Join("\n", dirslinq); 
0

Wenn Sie die Werte trennen, für die Sie mit für die Suche sind Beispiel Kommas, können Sie dann mit dem Befehl substring füttern die extrahierten Werte, um Ihren Code, und führen Sie es mehrmals

1

versuchen, den Text mit Komma zu trennen, siehe unten code:

+0

thnk u so much :) seine Arbeits :) – New

+0

würde dies aus dem letzten Eintrag in 'folderNames' nur die Ausgabe nicht produzieren? um alle Spiele zu haben, die Sie benötigen würden, um die 2. Schleife in die 1. zu verschachteln –