Просмотр списка как проводник Windows
-
19-09-2019 - |
Вопрос
знаете ли вы какой-нибудь хороший пример, как создать ListView, который будет выглядеть и будет использовать те же методы, что и Windows Explorer.
копирование, вставка, отображение миниатюр??
Я должен использовать ListView, потому что я не могу разрешить пользователю изменять каталог, и я не могу отключить эту опцию в проводнике Windows (я имею в виду место, где я могу щелкнуть, чтобы перейти вверх или вниз или указать путь.
Решение
Я рекомендовал этот проект, никогда не слышал жалоб на это.Обратите внимание, что встраиваемый браузер доступен начиная с Vista, он обернут классом ExplorerBrowser, доступным в Пакет кода Windows API.
Имейте в виду, что такого рода решения создают множество зависимостей в вашем проекте.Подумайте о том, чтобы сопоставить эти затраты с простой реализацией openfiledialog's Событие FileOk и отмените нажатие кнопки OK, если вам не нравится путь.
Другие советы
Это нетривиальная задача, но вы можете взглянуть на этот проект.Это на VB.Net, но это может послужить источником вдохновения.
Я кое-что написал, но я не знаю, как добавить событие при нажатии на значок, чтобы получить путь к этому значку.
path = folderBrowserDialog1.SelectedPath;
ImageList imageList1 = new ImageList();
imageList1.ImageSize = new Size(256, 256);
imageList1.ColorDepth = ColorDepth.Depth24Bit;
string[] iconFiles = Directory.GetFiles(path, "*.jpg");
foreach (string iconFile in iconFiles)
{
try
{
imageList1.Images.Add(Image.FromFile(iconFile));
}
catch
{
MessageBox("Error","");
}
}
this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = imageList1;
for (int j = 0; j < imageList1.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
Как перестроить этот код ??
Вы можете использовать графику.drawImage для загрузки файла jog и создания из него эскиза.Это будет работать только для файлов изображений.
Чтобы получить эскизы других типов файлов, вы должны использовать интерфейс shell IExtractIcon.
Для копирования / вставки используйте DataFormats.Формат FileDrop с полными путями к файлам.
Готовую альтернативу смотрите в нашем Просмотр файла контроль.