コード例 #1
0
ファイル: ListExtensions.cs プロジェクト: CloudIDEaaS/hydra
        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);
        }
コード例 #2
0
ファイル: ListExtensions.cs プロジェクト: CloudIDEaaS/hydra
        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();
        }