想在 WinForm 中登入 FTP 並以樹狀或列表方式顯示資料夾與檔案,效果如同 Windows 檔案總管。最輕量且原生的方案是使用 ListView 控制項的 Detail(詳細資料)模式,搭配 ImageList 區分資料夾與檔案圖示。
listView1.View = View.Details;
listView1.Columns.Add("名稱", 200);
listView1.Columns.Add("大小", 80);
listView1.Columns.Add("類型", 100);
listView1.Columns.Add("修改時間", 120);
imageList1.Images.Add(Properties.Resources.folder);
imageList1.Images.Add(Properties.Resources.file);
listView1.SmallImageList = imageList1;
FtpWebRequest 或第三方庫如 FluentFTP),將每個項目加入 ListViewItem:
var item = new ListViewItem(entry.Name, entry.IsDirectory ? 0 : GetFileIconIndex(entry.Name));
item.SubItems.Add(entry.IsDirectory ? "" : entry.Size.ToString());
item.SubItems.Add(entry.IsDirectory ? "資料夾" : GetFileType(entry.Name));
item.SubItems.Add(entry.LastModified.ToString("yyyy/MM/dd HH:mm"));
item.Tag = entry; // 保存完整資訊供雙擊事件使用
listView1.Items.Add(item);
listView1.VirtualMode = true 並實作 RetrieveVirtualItem,大幅提升效能。ToolStrip + 按鈕實現「上一級」、「刷新」、「路徑輸入框」。ListView 的 Detail 模式配合 ImageList 即可完美複刻資源管理器的列表視圖,無需引入重型第三方樹狀控件,開發效率與執行效能兼顧。