listView.View = View.Details;
listView.AllowDrop = true;
private void ListFolder(string directory)
{
labelCurFolder.Text = directory;
string[] files = Directory.GetFiles(directory);
listViewFolder.Items.Clear();
listViewFolder.Columns.Clear();
listViewFolder.Columns.Add("Name", 300);
listViewFolder.Columns.Add("Size", 100);
listViewFolder.Columns.Add("Time", 200);
foreach (string file in files)
{
var item = new ListViewItem(Path.GetFileName(file)) { Tag = file };
// 圖示
var iconProvider = new IconImageProvider(listViewFolder.SmallImageList, listViewFolder.LargeImageList);
item.ImageIndex = iconProvider.GetIconImageIndex(file);
// 大小格式化
var fi = new FileInfo(file);
long size = fi.Length;
string sizeStr = size < 1024 ? size.ToString() :
size < 1024 * 1024 ? $"{size/1024f:###.##}KB" :
size < 1024 * 1024 * 1024 ? $"{size/1024f/1024f:###.##}MB" :
$"{size/1024f/1024f/1024f:###.##}GB";
item.SubItems.Add(new ListViewItem.ListViewSubItem { Text = sizeStr, Tag = size });
// 時間
DateTime dt = File.GetLastWriteTime(file);
item.SubItems.Add(new ListViewItem.ListViewSubItem { Text = dt.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), Tag = dt });
listViewFolder.Items.Add(item);
}
}
IconImageProvider 類別處理系統圖示擷取與快取,程式碼略。此基礎建立類似總管的檔案清單,後續可加入拖放邏輯。