Пример #1
0
        //将搜索结果显示在文件列表上
        private void AddSearchResultItemIntoList(string fullPath, bool isFile)
        {
            //是文件
            if (isFile)
            {
                FileInfo fileInfo = new FileInfo(fullPath);

                ListViewItem item = lvwFiles.Items.Add(fileInfo.Name);

                //为exe文件或无拓展名
                if (fileInfo.Extension == ".exe" || fileInfo.Extension == "")
                {
                    //通过当前系统获得文件相应图标
                    Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                    //因为不同的exe文件一般图标都不相同,所以不能按拓展名存取图标,应按文件名存取图标
                    ilstIcons.Images.Add(fileInfo.Name, fileIcon);

                    item.ImageKey = fileInfo.Name;
                }
                //其他文件
                else
                {
                    if (!ilstIcons.Images.ContainsKey(fileInfo.Extension))
                    {
                        Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                        //因为类型(除了exe)相同的文件,图标相同,所以可以按拓展名存取图标
                        ilstIcons.Images.Add(fileInfo.Extension, fileIcon);
                    }

                    item.ImageKey = fileInfo.Extension;
                }

                item.Tag = fileInfo.FullName;

                item.SubItems.Add(fileInfo.LastWriteTimeUtc.ToString());
                item.SubItems.Add(fileInfo.Extension + "文件");
                item.SubItems.Add(AttributeForm.ShowFileSize(fileInfo.Length).Split('(')[0]);
            }
            //是文件夹
            else
            {
                DirectoryInfo dirInfo = new DirectoryInfo(fullPath);

                ListViewItem item = lvwFiles.Items.Add(dirInfo.Name, IconsIndexes.Folder);
                item.Tag = dirInfo.FullName;
                item.SubItems.Add(dirInfo.LastWriteTimeUtc.ToString());
                item.SubItems.Add("文件夹");
                item.SubItems.Add("");
            }
        }
Пример #2
0
        //在右窗体中显示指定路径下的所有文件/文件夹
        public void ShowFilesList(string path, bool isRecord)
        {
            //后退按钮可用
            tsbtnBack.Enabled = true;

            //需要保存记录,则需要创建新的路径节点
            if (isRecord)
            {
                //保存用户的历史访问路径
                DoublyLinkedListNode newNode = new DoublyLinkedListNode();
                newNode.Path         = path;
                curPathNode.NextNode = newNode;
                newNode.PreNode      = curPathNode;

                curPathNode = newNode;
            }


            //开始数据更新
            lvwFiles.BeginUpdate();

            //清空lvwFiles
            lvwFiles.Items.Clear();

            if (path == "最近访问")
            {
                //获取最近使用的文件的路径的枚举集合
                var recentFiles = RecentFilesUtil.GetRecentFiles();

                foreach (string file in recentFiles)
                {
                    if (File.Exists(file))
                    {
                        FileInfo fileInfo = new FileInfo(file);

                        ListViewItem item = lvwFiles.Items.Add(fileInfo.Name);

                        //为exe文件或无拓展名
                        if (fileInfo.Extension == ".exe" || fileInfo.Extension == "")
                        {
                            //通过当前系统获得文件相应图标
                            Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                            //因为不同的exe文件一般图标都不相同,所以不能按拓展名存取图标,应按文件名存取图标
                            ilstIcons.Images.Add(fileInfo.Name, fileIcon);

                            item.ImageKey = fileInfo.Name;
                        }
                        //其他文件
                        else
                        {
                            if (!ilstIcons.Images.ContainsKey(fileInfo.Extension))
                            {
                                Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                                //因为类型(除了exe)相同的文件,图标相同,所以可以按拓展名存取图标
                                ilstIcons.Images.Add(fileInfo.Extension, fileIcon);
                            }

                            item.ImageKey = fileInfo.Extension;
                        }

                        item.Tag = fileInfo.FullName;
                        item.SubItems.Add(fileInfo.LastWriteTime.ToString());
                        item.SubItems.Add(fileInfo.Extension + "文件");
                        item.SubItems.Add(AttributeForm.ShowFileSize(fileInfo.Length).Split('(')[0]);
                    }
                    else if (Directory.Exists(file))
                    {
                        DirectoryInfo dirInfo = new DirectoryInfo(file);

                        ListViewItem item = lvwFiles.Items.Add(dirInfo.Name, IconsIndexes.Folder);
                        item.Tag = dirInfo.FullName;
                        item.SubItems.Add(dirInfo.LastWriteTime.ToString());
                        item.SubItems.Add("文件夹");
                        item.SubItems.Add("");
                    }
                }
            }
            else
            {
                try
                {
                    DirectoryInfo   directoryInfo  = new DirectoryInfo(path);
                    DirectoryInfo[] directoryInfos = directoryInfo.GetDirectories();
                    FileInfo[]      fileInfos      = directoryInfo.GetFiles();

                    //删除ilstIcons(ImageList)中的exe文件的图标,释放ilstIcons的空间
                    foreach (ListViewItem item in lvwFiles.Items)
                    {
                        if (item.Text.EndsWith(".exe"))
                        {
                            ilstIcons.Images.RemoveByKey(item.Text);
                        }
                    }



                    //列出所有文件夹
                    foreach (DirectoryInfo dirInfo in directoryInfos)
                    {
                        ListViewItem item = lvwFiles.Items.Add(dirInfo.Name, IconsIndexes.Folder);
                        item.Tag = dirInfo.FullName;
                        item.SubItems.Add(dirInfo.LastWriteTime.ToString());
                        item.SubItems.Add("文件夹");
                        item.SubItems.Add("");
                    }

                    //列出所有文件
                    foreach (FileInfo fileInfo in fileInfos)
                    {
                        ListViewItem item = lvwFiles.Items.Add(fileInfo.Name);

                        //为exe文件或无拓展名
                        if (fileInfo.Extension == ".exe" || fileInfo.Extension == "")
                        {
                            //通过当前系统获得文件相应图标
                            Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                            //因为不同的exe文件一般图标都不相同,所以不能按拓展名存取图标,应按文件名存取图标
                            ilstIcons.Images.Add(fileInfo.Name, fileIcon);

                            item.ImageKey = fileInfo.Name;
                        }
                        //其他文件
                        else
                        {
                            if (!ilstIcons.Images.ContainsKey(fileInfo.Extension))
                            {
                                Icon fileIcon = GetSystemIcon.GetIconByFileName(fileInfo.FullName);

                                //因为类型(除了exe)相同的文件,图标相同,所以可以按拓展名存取图标
                                ilstIcons.Images.Add(fileInfo.Extension, fileIcon);
                            }

                            item.ImageKey = fileInfo.Extension;
                        }

                        item.Tag = fileInfo.FullName;
                        item.SubItems.Add(fileInfo.LastWriteTime.ToString());
                        item.SubItems.Add(fileInfo.Extension + "文件");
                        item.SubItems.Add(AttributeForm.ShowFileSize(fileInfo.Length).Split('(')[0]);
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }


            //更新当前路径
            curFilePath = path;

            //更新地址栏
            tscboAddress.Text = curFilePath;

            //更新状态栏
            tsslblFilesNum.Text = lvwFiles.Items.Count + " 个项目";

            //结束数据更新
            lvwFiles.EndUpdate();
        }