/// <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); } }