ListView как проводник Windows

Знаете ли вы какой-нибудь хороший пример создания listView, который будет выглядеть и иметь те же методы, что и проводник Windows.

копирование, вставка, отображение эскизов ??

Я должен использовать listView, потому что я не могу разрешить пользователю изменять каталог, и я не могу отключить эту опцию в проводнике Windows (я имею в виду место, где я могу щелкнуть, чтобы перейти вверх или вниз или указать путь.


person user278618    schedule 11.03.2010    source источник


Ответы (4)


Я рекомендовал этот проект и никогда не слышал жалоб на него. Обратите внимание, что встраиваемый браузер доступен начиная с Vista, он обернут классом ExplorerBrowser, доступным в Windows API Code Pack. .

Остерегайтесь, что такие решения создают много зависимостей в вашем проекте. Рассмотрите возможность сравнения этих затрат с простой реализацией OpenFileDialog FileOk. событие и отмена нажатия кнопки OK, если путь вам не нравится.

person Hans Passant    schedule 11.03.2010

Это нетривиальная задача, но вы можете ознакомиться с этим проектом. Он есть в VB.Net, но может послужить источником вдохновения.

person Klaus Byskov Pedersen    schedule 11.03.2010

Я что-то написал, но не знаю, как добавить событие при нажатии на значок, чтобы получить путь к этому значку.

    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);               
}

Как пересобрать этот код??

person user278618    schedule 11.03.2010

Вы можете использовать Graphics.DrawImage, чтобы загрузить файл пробежки и создать из него миниатюру. Это будет работать только для файлов изображений.

Для получения эскизов файлов других типов необходимо использовать интерфейс оболочки IExtractIcon.

Для копирования/вставки используйте формат DataFormats.FileDrop с полными путями к файлам.


Готовую альтернативу см. в нашем элементе управления FileView.

person logicnp    schedule 11.03.2010