通过一个文本框搜索多个值

时间:2016-07-14 09:06:34

标签: c#

在这里,当我们在input.text中输入文件夹名称时,它将在D驱动器中搜索该文件夹并在Path.text中返回其路径。 它适用于input.text中输入的单个名称 但我想在input.text中搜索多个文件夹名称,并希望其路径位于Path.text

例如:

  

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

3 个答案:

答案 0 :(得分:2)

试试这个: 首先拆分所有输入的目录 然后为每个单独的条目调用你的函数。 要使用+=

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

另一种可能性也可能是使用Linq并一气呵成:

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

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

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

答案 1 :(得分: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() + ", ";
        }

答案 2 :(得分:0)

如果您使用逗号分隔您要搜索的值,则可以使用substring命令将提取的值提供给代码,并多次运行