Я создаю файловый менеджер для разработки приложения для обработки изображений. Я использую GetDrives(), чтобы начать загрузку древовидного представления, и оно возвращает все внутренние диски, включая два на внутреннем диске NVME. Но он не показывает никаких внешних дисков — до тех пор, пока — я не вставлю диск в привод cdrom, затем он показывает все подключенные диски, как внутренние, так и внешние. В тот момент, когда я удаляю компакт-диск, он больше не видит внешние диски.
Кроме того, хотя и не обязательно, любые указатели на [рекурсивную?] загрузку подкаталогов помогут ускорить разработку, и очень признателен.
Это мой код на сегодняшний день:
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
Не найти все диски в С#.net 8.0/9.0 с помощью GetDrives() ⇐ C#
Место общения программистов C#
-
Anonymous
1734533147
Anonymous
Я создаю файловый менеджер для разработки приложения для обработки изображений. Я использую GetDrives(), чтобы начать загрузку древовидного представления, и оно возвращает все внутренние диски, включая два на внутреннем диске NVME. Но он не показывает [b]никаких[/b] внешних дисков — до тех пор, пока — я не вставлю диск в привод cdrom, затем он показывает все подключенные диски, как внутренние, так и внешние. В тот момент, когда я удаляю компакт-диск, он больше не видит внешние диски.
Кроме того, хотя и не обязательно, любые указатели на [рекурсивную?] загрузку подкаталогов помогут ускорить разработку, и очень признателен.
Это мой код на сегодняшний день:
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-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антехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия