Пример #1
0
        /// <summary>
        /// 递归搜索
        /// </summary>
        /// <param name="fileTree"></param>
        /// <param name="key"></param>
        /// <param name="listView"></param>
        void recursiveSearch(FileTree fileTree, string key)
        {
            /* 检索文件 */
            foreach (FileTree.TreeFileInfo tfi in fileTree.CurrentDirectoryFileList.Values)
            {
                if (tfi.FileName.ToLower().Contains(key.ToLower()))
                {
                    string fileName = tfi.FilePath;
                    /* 大图标注意判断文件是否为图片 */
                    ListViewUtility.Invoke(new MethodInvoker(delegate
                    {
                        if (CodeAnalysis.IsImage(tfi.FilePath))
                        {
                            Image image = Int32Dec64Convert.ConverToSquareBitmap(ImageListLargeUtility.ImageSize.Width, Image.FromFile(tfi.FilePath));
                            ImageListLargeUtility.Images.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), image);
                        }
                        else if (LargeIconDict.ContainsKey(tfi.ExtendName))
                        {
                            ImageListLargeUtility.Images.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), Int32Dec64Convert.ConverToSquareBitmap(ImageListLargeUtility.ImageSize.Width, LargeIconDict[tfi.ExtendName]));
                        }
                        else
                        {
                            ImageListLargeUtility.Images.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), Int32Dec64Convert.ConverToSquareBitmap(ImageListLargeUtility.ImageSize.Width, LargeDefaultFileIcon));
                        }

                        if (SmallIconDict.ContainsKey(tfi.ExtendName))
                        {
                            ImageListSmallUtility.Images.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), Int32Dec64Convert.ConverToSquareBitmap(ImageListSmallUtility.ImageSize.Width, SmallIconDict[tfi.ExtendName]));
                        }
                        else
                        {
                            ImageListSmallUtility.Images.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), Int32Dec64Convert.ConverToSquareBitmap(ImageListSmallUtility.ImageSize.Width, SmallDefaultFileIcon));
                        }


                        ListViewUtility.Items.Add(MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName), tfi.FileName, MyConfig.getListKeyName(FileTree.FILE_IDENTIFY_NAME, fileName));
                        Application.DoEvents();
                    }));
                }
            }
            /* 检索文件夹 */
            foreach (FileTree ft in fileTree.SubTree.Values)
            {
                if (ft.RootDirectory.Name.ToLower().Contains(key.ToLower()))
                {
                    string directoryPath = ft.RootDirectory.FullName;
                    ListViewUtility.Invoke(new MethodInvoker(delegate
                    {
                        ImageListLargeUtility.Images.Add(MyConfig.getListKeyName(FileTree.FOLDER_IDENTIFY_NAME, directoryPath),
                                                         Int32Dec64Convert.ConverToSquareBitmap(ImageListLargeUtility.ImageSize.Width, LargeFolderIcon));
                        ImageListSmallUtility.Images.Add(MyConfig.getListKeyName(FileTree.FOLDER_IDENTIFY_NAME, directoryPath),
                                                         Int32Dec64Convert.ConverToSquareBitmap(ImageListSmallUtility.ImageSize.Width, SmallFolderIcon));

                        ListViewUtility.Items.Add(MyConfig.getListKeyName(FileTree.FOLDER_IDENTIFY_NAME, directoryPath), ft.RootDirectory.Name, MyConfig.getListKeyName(FileTree.FOLDER_IDENTIFY_NAME, directoryPath));
                        Application.DoEvents();
                    }));
                }
                /* 递归 */
                recursiveSearch(ft, key);
            }
        }