首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# WinForm 檔案拖放實作(一):ListView 初始化、目錄列表載入、檔案圖示/大小/時間顯示完整程式碼

     編輯:關於C語言

步驟 1:ListView 初始化


listView.View = View.Details;
listView.AllowDrop = true;

步驟 2:ListFolder 目錄載入


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 類別處理系統圖示擷取與快取,程式碼略。此基礎建立類似總管的檔案清單,後續可加入拖放邏輯。

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