首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WinForm 顯示 FTP 目錄結構?用 ListView Detail 模式仿系統資源管理器

     編輯:程式設計綜合問答

想在 WinForm 中登入 FTP 並以樹狀或列表方式顯示資料夾與檔案,效果如同 Windows 檔案總管。最輕量且原生的方案是使用 ListView 控制項的 Detail(詳細資料)模式,搭配 ImageList 區分資料夾與檔案圖示。

核心實作步驟

  1. 設定 ListView:
    listView1.View = View.Details;
    listView1.Columns.Add("名稱", 200);
    listView1.Columns.Add("大小", 80);
    listView1.Columns.Add("類型", 100);
    listView1.Columns.Add("修改時間", 120);
  2. 準備 ImageList:加入資料夾圖示(索引 0)與預設檔案圖示(索引 1),再依副檔名擴充更多圖示。
    imageList1.Images.Add(Properties.Resources.folder);
    imageList1.Images.Add(Properties.Resources.file);
    listView1.SmallImageList = imageList1;
  3. 遞迴/迭代讀取 FTP 目錄(使用 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);
  4. 處理雙擊事件:若為資料夾,清空列表並載入該路徑下內容;若為檔案,觸發下載或開啟邏輯。

進階提示

  • 大量資料時啟用 listView1.VirtualMode = true 並實作 RetrieveVirtualItem,大幅提升效能。
  • 右鍵選單可加入「上傳」、「刪除」、「重新命名」等 FTP 操作。
  • 路徑導航列可用 ToolStrip + 按鈕實現「上一級」、「刷新」、「路徑輸入框」。

結語

ListView 的 Detail 模式配合 ImageList 即可完美複刻資源管理器的列表視圖,無需引入重型第三方樹狀控件,開發效率與執行效能兼顧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved