2012-10-21 38 views
0

所以基本上我想要的是用户按下浏览按钮并弹出一个FolderBroswerDialog。然后,用户选择一个文件夹,然后在图标视图中将ViewList中的所有图像填充到该文件夹​​中。我怎样才能做到这一点?我目前拥有的代码将从文件夹中选择所有文件,并将它们显示在ListView中,但没有图标。我如何获得图标?
这里是我目前拥有的代码...如何在用户从FolderBrowserDialog中选择一个文件夹时在ViewList中显示图像图标?

private void button1_Click(object sender, EventArgs e) 
{ 

    FolderBrowserDialog browsefolder = new FolderBrowserDialog(); 
    if (browsefolder.ShowDialog() == DialogResult.OK) 
    { 
     listView1.Items.Clear(); 

     string[] myfiles = Directory.GetFiles(folderPicker.SelectedPath); 
     foreach (string file in myfiles) 
     { 
      string fileName = Path.GetFileNameWithoutExtension(file); 
      ListViewItem myitem = new ListViewItem(fileName); 
      myitem.Tag = file; 
      listView1.Items.Add(myitem); 
     } 

    } 
} 

回答

1

这不是那么容易准确和高性能的方式做。快速和肮脏的方法是使用Icon.ExtractAssociatedIcon()并将返回的图标添加到与列表视图关联的ImageList。但是,您将无法获得与Explorer中所看到的完全相同的图标。这需要pinvoking SHGetFileInfo(),很痛苦做自己,但代码很容易谷歌。

一个完全不同的方法是将资源管理器窗口嵌入到您自己的窗体中,而不是使用ListView。有了这些主要优点,您将获得完全相同的外观,并且在程序保持响应时,您将自动获取后台线程,查看图标。缺点是这不适用于XP。您需要的课程是Windows API Code Pack的一部分。

相关问题