public static void AssignToImageList(this ListView listView, ColumnHeader columnHeaderName, ColumnHeader columnHeaderDateModified, ColumnHeader columnHeaderType) { var sorter = new ListViewColumnSorter(); ListExtensions.columnHeaderName = columnHeaderName; ListExtensions.columnHeaderDateModified = columnHeaderDateModified; ListExtensions.columnHeaderType = columnHeaderType; listView.SmallImageList = imageList; listView.LargeImageList = imageList; listView.StateImageList = imageList; listView.Sorting = SortOrder.Ascending; sorter.SortModifier = ListViewColumnSorter.SortModifiers.SortCustom; sorter.CustomCompare = new FolderItemCompare(columnHeaderName, columnHeaderType); sorter.ColumnToSort = columnHeaderType.DisplayIndex; sorter.OrderOfSort = SortOrder.Ascending; listView.AddColumnSortingBehavior(sorter); }
public static void Add(this ListView listView, FileSystemInfo fileSystemInfo, Func <Image> getIconImage) { var type = typeof(frmPackageCacheStatus); var fileType = "Folder"; string imageName; Image image = null; ListViewItem item; int index; var sorter = new ListViewColumnSorter(); if (fileSystemInfo is FileInfo) { imageName = Path.GetExtension(fileSystemInfo.FullName); if (!fileTypes.ContainsKey(imageName)) { var regKey = Registry.ClassesRoot.OpenSubKey(imageName).ToIndexable(); string shellItemName; fileType = (string)regKey["PerceivedType"]; shellItemName = ((string)regKey[@"ShellNew\@ItemName"]).RegexGet("^@(?<fileName>[^,]*?),", "fileName"); fileTypes.Add(imageName, fileType); shellItemNames.Add(imageName, shellItemName); } } else { imageName = "Folder"; } if (imageList.Images.ContainsKey(imageName)) { index = imageList.Images.IndexOfKey(imageName); } else { if (image == null) { Bitmap bitmap; image = getIconImage(); bitmap = new Bitmap(image); bitmap.MakeTransparent(); image = bitmap; } imageList.Images.Add(imageName, image); index = imageList.Images.IndexOfKey(imageName); } item = listView.Items.Add(fileSystemInfo.Name, index); item.Tag = fileSystemInfo; item.AddSubItem(columnHeaderName, fileSystemInfo.Name); item.AddSubItem(columnHeaderDateModified, fileSystemInfo.LastWriteTime.ToShortDateString() + " " + fileSystemInfo.LastWriteTime.ToShortTimeString()); item.AddSubItem(columnHeaderType, fileType); sorter.SortModifier = ListViewColumnSorter.SortModifiers.SortCustom; sorter.CustomCompare = new FolderItemCompare(columnHeaderName, columnHeaderType); sorter.ColumnToSort = columnHeaderType.DisplayIndex; sorter.OrderOfSort = SortOrder.Ascending; listView.AddColumnSortingBehavior(sorter); listView.Sort(); }