我有一个包含4列的列表视图 - 名称,扩展名,大小和位置。我有一个方法,以字节为单位的文件大小,并根据需要转换为KB,MB,GB等。示例输出将是1024字节的文件,其打印为“1KB”。然后将该值放在列表视图中。
我需要做的是智能地对size列进行排序。现在排序只是一个简单的比较,所以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";
}
谢谢。
答案 0 :(得分:1)
.NET中的大多数对象都有一个Tag成员。在这里,您可以满足任何额外需要的东西。在您的情况下,我会将文件大小以字节为单位填充到ListViewSubItem.Tag属性中。然后,您的排序算法可以使用它来排序而不是列文本。
答案 1 :(得分:0)
以下答案可能重复。它应该很容易解决你的问题。
How to sort a listview column that contains file size data? C#