Nano Hash - криптовалюты, майнинг, программирование

TreeView, где корень и все узлы после этого происходят из первой подпапки - как указать правильный путь?

Я работаю над простым переносимым приложением с одной формой, в котором *.exe и папка с именем UserGeneratedContent находятся в одном каталоге. В моей форме у меня есть древовидное представление, которое я хочу заполнить узлами, соответствующими всем подпапкам (если они существуют) UserGeneratedContent. Код, который я вставил ниже, работает почти так, как я этого хочу, но он заполняет древовидную структуру UserGeneratedContent в качестве корневого узла и, в свою очередь, обрабатывает найденные подпапки как дочерние узлы и т. д.

string folder = @"UserGeneratedContent";
FolderHierachy.Nodes.Add(GetDirectoryNodes(folder));

private static TreeNode GetDirectoryNodes(string path)
{
    var node = new TreeNode(Path.GetFileName(path));
    var subDirs = Directory.GetDirectories(path).Select(d => GetDirectoryNodes(d)).ToArray();

     node.Nodes.AddRange(subDirs);
     return node;
}

На этом этапе я перепробовал почти все комбинации @"UserGeneratedContent", которые только мог придумать, - добавление обратной косой черты и т. д. в попытке получить доступ к подпапкам, но мне не повезло. Я знаю, что это, вероятно, что-то простое, но я застрял - каков правильный синтаксис, чтобы гарантировать, что приведенный выше метод просматривает UserGeneratedContent для получения подпапок?

Кроме того, я хочу, чтобы элемент управления древовидной структуры позволял пользователю создавать, переименовывать и удалять папки в любой иерархии по своему выбору, поэтому мне интересно, что будет считаться передовым опытом в этом отношении?

Правка\Обновление №1 - 2.12.2012:

После гораздо большего количества проб и ошибок я отказался от приведенного выше кода - что бы я ни пытался, по какой-то причине я не смог заставить его работать. К счастью, приведенный ниже код отлично работает для меня :-)

DirectoryInfo dirInfo = new DirectoryInfo(@"UserGeneratedContent");
DirectoryInfo[] subDirs = dirInfo.GetDirectories();

string pathToSubFolders = Path.Combine(@"UserGeneratedContent", subDirs[0].ToString());

PopulateTreeView(treeView1, pathToSubFolders);

private void PopulateTreeView(TreeView treeView, string path)
{
     treeView.Nodes.Clear();
     var rootDirectoryInfo = new DirectoryInfo(path);
     treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
     var directoryNode = new TreeNode(directoryInfo.Name);           
     foreach(var directory in directoryInfo.GetDirectories())
     {
          directoryNode.Nodes.Add(CreateDirectoryNode(directory));
     }

     return directory;
}

Мне нужно добавить к нему некоторый код обработки ошибок, чтобы в @"UserGeneratedContent" не было подпапок - так как subDirs[0].ToString() выдает исключение IndexOutOfRangeException, если подпапки не существуют, и я не совсем уверен, как это сделать. так что буду признателен за подсказки.

Правка\Обновление №2 - 2.12.2012:

Для проверки ошибок я использовал блок try-catch, как показано ниже:

try
{

  string pathToSubFolders = Path.Combine(dirInfo.ToString(), subDirs[0].ToString());

  PopulateTreeView(treeView1, pathToSubFolders);

}
catch (IndexOutOfRangeException)
{

            //Do Something Here

}

Приведенный выше код работает, но может ли кто-нибудь сказать мне, правильно ли я поступил?

Спасибо за чтение.


Ответы:


1

если вы еще не нашли другого решения, простым способом будет:

if(subDirs.Lenght != 0)        // or > 0
{
  string pathToSubFolders = Path.Combine(dirInfo.ToString(), subDirs[0].ToString());
  PopulateTreeView(treeView1, pathToSubFolders);
}
else
{
  //Do Something Here
}
18.04.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..