Я создаю файловый менеджер для разработки приложения для обработки изображений. Я использую GetDrives(), чтобы начать загрузку своего древовидного представления, и он возвращает все внутренние диски, включая два на внутреннем диске NVME.
Но он ничего не показывает внешние диски - пока я не вставлю диск в привод CD-ROM, он покажет все подключенные диски, как внутренние, так и внешние. В тот момент, когда я извлекаю компакт-диск, он больше не видит внешние приводы.
Кроме того, хотя это и не обязательно, есть какие-нибудь указания относительно рекурсивного подхода? загрузка подкаталогов поможет ускорить разработку, и я очень признателен.
Это мой код на сегодняшний день:
private void loadTree()
{
treeView1.Nodes.Clear();
try
{
// first get all available drives
DriveInfo[] allDrives = DriveInfo.GetDrives();
var driveCount = allDrives.Length;
for (var d = 0; d < driveCount; d++)
{
treeView1.Nodes.Add(new TreeNode(allDrives[d].Name));
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(treeView1.Nodes[d].Text);
// Get a reference to each directory in that directory.
DirectoryInfo[] diArr = di.GetDirectories();
// Display the names of the directories.
var dc = diArr.Length;
for (var dr = 0; dr < dc; dr++)
{
String currNode = diArr[dr].Name;
treeView1.Nodes[d].Nodes.Add(new TreeNode(currNode));
}
}
}
catch (Exception e)
{
// todo write handler
}
}
// This is the modified code to overcome the exception thrown when accessing an empty drive.
private void loadTree()
{
treeView1.Nodes.Clear();
try
{
// first get all available drives
DriveInfo[] allDrives = DriveInfo.GetDrives();
var driveCount = allDrives.Length;
var d = -1;
var nodeCount = -1;
while (d < driveCount)
{
// increment the indexes
d++;
nodeCount++;
// Check the drive is ready to access
DriveInfo thisDrive = new DriveInfo(allDrives[d].Name);
if (thisDrive.IsReady)
{
// Add the drive to the treeview
treeView1.Nodes.Add(new TreeNode(thisDrive.Name));
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(thisDrive.Name);
// Get a reference to each directory in that drive.
DirectoryInfo[] diArr = di.GetDirectories();
// Display the names of the directories.
var dc = diArr.Length;
for (var dr = 0; dr < dc; dr++)
{
String currNode = diArr[dr].Name;
treeView1.Nodes[nodeCount].Nodes.Add(new TreeNode(currNode));
}
}
else
{
// decrement nodeCount to forestall treeview exception
nodeCount--;
continue;
}
}
}
catch (Exception e)
{
// todo write handler
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... -getdrives
Не найти все диски в C# .NET 8.0/.NET 9.0 с помощью GetDrives() ⇐ C#
Место общения программистов C#
-
Anonymous
1734556097
Anonymous
Я создаю файловый менеджер для разработки приложения для обработки изображений. Я использую GetDrives(), чтобы начать загрузку своего древовидного представления, и он возвращает все внутренние диски, включая два на внутреннем диске NVME.
Но он ничего не показывает внешние диски - пока я не вставлю диск в привод CD-ROM, он покажет все подключенные диски, как внутренние, так и внешние. В тот момент, когда я извлекаю компакт-диск, он больше не видит внешние приводы.
Кроме того, хотя это и не обязательно, есть какие-нибудь указания относительно рекурсивного подхода? загрузка подкаталогов поможет ускорить разработку, и я очень признателен.
Это мой код на сегодняшний день:
private void loadTree()
{
treeView1.Nodes.Clear();
try
{
// first get all available drives
DriveInfo[] allDrives = DriveInfo.GetDrives();
var driveCount = allDrives.Length;
for (var d = 0; d < driveCount; d++)
{
treeView1.Nodes.Add(new TreeNode(allDrives[d].Name));
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(treeView1.Nodes[d].Text);
// Get a reference to each directory in that directory.
DirectoryInfo[] diArr = di.GetDirectories();
// Display the names of the directories.
var dc = diArr.Length;
for (var dr = 0; dr < dc; dr++)
{
String currNode = diArr[dr].Name;
treeView1.Nodes[d].Nodes.Add(new TreeNode(currNode));
}
}
}
catch (Exception e)
{
// todo write handler
}
}
// This is the modified code to overcome the exception thrown when accessing an empty drive.
private void loadTree()
{
treeView1.Nodes.Clear();
try
{
// first get all available drives
DriveInfo[] allDrives = DriveInfo.GetDrives();
var driveCount = allDrives.Length;
var d = -1;
var nodeCount = -1;
while (d < driveCount)
{
// increment the indexes
d++;
nodeCount++;
// Check the drive is ready to access
DriveInfo thisDrive = new DriveInfo(allDrives[d].Name);
if (thisDrive.IsReady)
{
// Add the drive to the treeview
treeView1.Nodes.Add(new TreeNode(thisDrive.Name));
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(thisDrive.Name);
// Get a reference to each directory in that drive.
DirectoryInfo[] diArr = di.GetDirectories();
// Display the names of the directories.
var dc = diArr.Length;
for (var dr = 0; dr < dc; dr++)
{
String currNode = diArr[dr].Name;
treeView1.Nodes[nodeCount].Nodes.Add(new TreeNode(currNode));
}
}
else
{
// decrement nodeCount to forestall treeview exception
nodeCount--;
continue;
}
}
}
catch (Exception e)
{
// todo write handler
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79291499/not-finding-all-drives-in-c-sharp-net-8-0-net-9-0-using-getdrives[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия