2016-07-14 14 views
0

ここで、input.textにフォルダ名を入力すると、Dドライブのそのフォルダが検索され、そのパスがPath.textに戻ります。 input.text に入力された単一の名前に対してうまく働いていますが、複数のフォルダ名を時刻に検索する場合は、になり、そのパスはPath.textになります。例えば複数の値から1つのテキストボックスを検索

ABC、EFG、XYZ

あなたはあなたのために検索している値を区切る場合、私はinput.text

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

"ABC、EFG、XYZ"というテキスト(および任意の数の次のテキスト)を分割して結果をループし、それに応じてディレクトリをチェックしようとしましたか?これは、1つのディレクトリが複数の文字列と一致する場合に重複する可能性がありますが、これは後で処理できます... – Tyron78

+0

注意!オプション: 'SearchOption.AllDirectories'は、あなたがいくつかのディレクトリにアクセスする権限を持っていないと例外をスローする可能性があります。 –

答えて

2

これを試してみてください: 最初に入力したすべてのディレクトリを分割します。 次に、各単一エントリについて、あなたの関数を呼び出します。 そして、もう一つの可能​​性もLINQのを使用することと一撃でそれを行うことができ、あなたのTextBoxの使用に+=

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; 
     } 
    } 
} 

をより多くのテキストを追加するには:

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

に入力されたこれら三つの値例のカンマの場合は、substringコマンドで抽出した値をコードにフィードし、複数回実行することができます

1

以下を参照して、コンマを使用してテキストを分割するようにしてくださいコード:

 var folderNames = input.Text.Split(','); 
     string[] dirs = null; 
     foreach (var folder in folderNames) 
     { 
      dirs = Directory.GetDirectories(@"D:\", folder + "*", SearchOption.AllDirectories); 
     } 

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

thnk u so much :) :) – New

+0

これは 'folderNames'の最後のエントリからの出力だけを生成しませんか? 2番目のループを1番目に入れ子にするのに必要なすべての一致を持つ –

関連する問題