【问题标题】:How to sort a listview by file size?如何按文件大小对列表视图进行排序?
【发布时间】:2009-02-03 17:47:30
【问题描述】:

我有一个包含 4 列的列表视图 - 名称、扩展名、大小和位置。我有一种方法,它以字节为单位获取文件大小并根据需要转换为 KB、MB、GB 等。一个示例输出是一个 1024 字节的文件,打印为“1KB”。然后将该值放置在列表视图中。

我需要做的是智能地对大小列进行排序。现在排序只是一个简单的比较,所以 1025 KB 高于 1024 MB。我怎样才能让它“感知大小”?

我当前的排序代码来自这篇知识库文章:http://support.microsoft.com/kb/319401 这是我生成文件大小文本的代码:

        public static string getDynamicFileSize(string fileName)
    {
        FileInfo fi = new FileInfo(fileName);
        long sizeInBytes = fi.Length;
        if (sizeInBytes >= 1073741824)
        {
            double sizeInGB = sizeInBytes / Math.Pow(1024, 3);
            return Math.Round(sizeInGB, 2) + " GB";
        }

        if (sizeInBytes >= 1048576)
        {
            double sizeInMB = sizeInBytes / Math.Pow(1024, 2);
            return Math.Round(sizeInMB, 2) + " MB";
        }

        if (sizeInBytes >= 1024)
        {
            double sizeInKB = sizeInBytes / Math.Pow(1024,1);
            return Math.Round(sizeInKB, 2) + " KB";
        }

        //No conversion needed
        return sizeInBytes + " bytes";
    }

谢谢。

【问题讨论】:

    标签: c# sorting file


    【解决方案1】:

    .NET 中的大多数对象都有一个 Tag 成员。这是一个你可以塞进任何你需要的东西的地方。在您的情况下,我会将文件大小(以字节为单位)填充到 ListViewSubItem.Tag 属性中。然后,您的排序算法可以使用它来排序而不是列文本。

    【讨论】:

      【解决方案2】:

      以下答案可能重复。它应该可以轻松解决您的问题。

      How to sort a listview column that contains file size data? C#

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 2021-08-02
        • 2013-08-13
        • 1970-01-01
        • 1970-01-01
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多