Вы можете сделать что-то вроде этого:
List<string> GetFiles(string topDirectory, string filter)
{
List<string> list = new List<string>();
list.AddRange(Directory.GetFiles(topDirectory, filter));
foreach (string directory in Directory.GetDirectories(topDirectory))
{
list.AddRange(GetFiles(directory));
}
return list;
}
и позвоните по этому номеру:
List<string> files = GetFiles(tb_dir.Text, tb_filter.Text);
Конечно, вы можете преобразовать список файлов в массив.
Вы должны добавить блоки try catch для обработки исключения UnauthorizedAccessException.