using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication2
{ public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//fillListView(listView1, @"");
textBox1.Text = @"F:\魔兽争霸";
}
private void fillListView(ListView lv, string strPath)
{
DirectoryInfo directory = new DirectoryInfo(strPath);
lv.Items.Clear();
foreach (DirectoryInfo dir in directory.GetDirectories())
{
ListViewItem item = new ListViewItem(dir.Name);
item.SubItems.Add(string.Empty);
item.SubItems.Add("文件夹");
item.SubItems.Add(string.Empty);
lv.Items.Add(item);
}
foreach (FileInfo file in directory.GetFiles())
{
ListViewItem item = new ListViewItem(file.Name);
item.SubItems.Add((file.Length / 1024).ToString() + " KB");
item.SubItems.Add(file.Extension + "文件");
item.SubItems.Add(file.LastWriteTime.ToString());
lv.Items.Add(item);
}
} private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length==0)
{
folderBrowserDialog1.ShowDialog();
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
LoadFiles(textBox1.Text);
} private void LoadFiles(string Path)
{
listView1.Items.Clear();
DirectoryInfo directory = new DirectoryInfo(Path);
foreach (DirectoryInfo dir in directory.GetDirectories())
{
SHFILEINFO shinfo = new SHFILEINFO();
Win32.SHGetFileInfo(dir.FullName,
(uint)0x80,
ref shinfo,
(uint)System.Runtime.InteropServices.Marshal.SizeOf(shinfo),
(uint)(0x100 | 0x400));
System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
if (imageList1.Images[".Directory"] == null)
{
imageList1.Images.Add(".Directory", myIcon);
} ListViewItem item = new ListViewItem(dir.Name);
item.ImageIndex = imageList1.Images.IndexOfKey(".Directory"); item.SubItems.Add(string.Empty);
item.SubItems.Add("文件夹");
item.SubItems.Add(string.Empty);
item.SubItems.Add(dir.FullName);
listView1.Items.Add(item);
}
foreach (FileInfo file in directory.GetFiles())
{
SHFILEINFO shinfo = new SHFILEINFO();
Win32.SHGetFileInfo(file.FullName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);
System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
if (imageList1.Images[file.Extension]==null)
{
imageList1.Images.Add(file.Extension, myIcon);
}
ListViewItem item = new ListViewItem(file.Name); item.ImageIndex = imageList1.Images.IndexOfKey(file.Extension);
item.SubItems.Add((file.Length / 1024).ToString() + "KB");
item.SubItems.Add(file.Extension);
item.SubItems.Add(file.LastWriteTime.ToString());
listView1.Items.Add(item);
} } private void listView1_DoubleClick(object sender, EventArgs e)
{
//listView1.SelectedItems[0]
//if (listView1.SelectedItems[1].Text=="文件夹")
//{
// MessageBox.Show("下一层");
//}
}
}
[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public IntPtr iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
} /// <summary>
/// 定义调用的API方法
/// </summary>
public class Win32
{
public const uint SHGFI_ICON = 0x100;
public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
public const uint SHGFI_SMALLICON = 0x1; // 'Small icon [DllImport("shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
[DllImport("shell32.dll")]
public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons); [DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type); [DllImport("User32.dll", EntryPoint = "DestroyIcon")]
public static extern int DestroyIcon(IntPtr hIcon); }
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication2
{ public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//fillListView(listView1, @"");
textBox1.Text = @"F:\魔兽争霸";
}
private void fillListView(ListView lv, string strPath)
{
DirectoryInfo directory = new DirectoryInfo(strPath);
lv.Items.Clear();
foreach (DirectoryInfo dir in directory.GetDirectories())
{
ListViewItem item = new ListViewItem(dir.Name);
item.SubItems.Add(string.Empty);
item.SubItems.Add("文件夹");
item.SubItems.Add(string.Empty);
lv.Items.Add(item);
}
foreach (FileInfo file in directory.GetFiles())
{
ListViewItem item = new ListViewItem(file.Name);
item.SubItems.Add((file.Length / 1024).ToString() + " KB");
item.SubItems.Add(file.Extension + "文件");
item.SubItems.Add(file.LastWriteTime.ToString());
lv.Items.Add(item);
}
} private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length==0)
{
folderBrowserDialog1.ShowDialog();
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
LoadFiles(textBox1.Text);
} private void LoadFiles(string Path)
{
listView1.Items.Clear();
DirectoryInfo directory = new DirectoryInfo(Path);
foreach (DirectoryInfo dir in directory.GetDirectories())
{
SHFILEINFO shinfo = new SHFILEINFO();
Win32.SHGetFileInfo(dir.FullName,
(uint)0x80,
ref shinfo,
(uint)System.Runtime.InteropServices.Marshal.SizeOf(shinfo),
(uint)(0x100 | 0x400));
System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
if (imageList1.Images[".Directory"] == null)
{
imageList1.Images.Add(".Directory", myIcon);
} ListViewItem item = new ListViewItem(dir.Name);
item.ImageIndex = imageList1.Images.IndexOfKey(".Directory"); item.SubItems.Add(string.Empty);
item.SubItems.Add("文件夹");
item.SubItems.Add(string.Empty);
item.SubItems.Add(dir.FullName);
listView1.Items.Add(item);
}
foreach (FileInfo file in directory.GetFiles())
{
SHFILEINFO shinfo = new SHFILEINFO();
Win32.SHGetFileInfo(file.FullName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);
System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
if (imageList1.Images[file.Extension]==null)
{
imageList1.Images.Add(file.Extension, myIcon);
}
ListViewItem item = new ListViewItem(file.Name); item.ImageIndex = imageList1.Images.IndexOfKey(file.Extension);
item.SubItems.Add((file.Length / 1024).ToString() + "KB");
item.SubItems.Add(file.Extension);
item.SubItems.Add(file.LastWriteTime.ToString());
listView1.Items.Add(item);
} } private void listView1_DoubleClick(object sender, EventArgs e)
{
//listView1.SelectedItems[0]
//if (listView1.SelectedItems[1].Text=="文件夹")
//{
// MessageBox.Show("下一层");
//}
}
}
[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public IntPtr iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
} /// <summary>
/// 定义调用的API方法
/// </summary>
public class Win32
{
public const uint SHGFI_ICON = 0x100;
public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
public const uint SHGFI_SMALLICON = 0x1; // 'Small icon [DllImport("shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
[DllImport("shell32.dll")]
public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons); [DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type); [DllImport("User32.dll", EntryPoint = "DestroyIcon")]
public static extern int DestroyIcon(IntPtr hIcon); }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货