//显示属性窗口 private void ShowAttributeForm() { //右边窗体中没有文件/文件夹被选中 if (lvwFiles.SelectedItems.Count == 0) { if (curFilePath == "最近访问") { MessageBox.Show("不能查看当前路径的属性!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } AttributeForm attributeForm = new AttributeForm(curFilePath); //显示当前文件夹的属性 attributeForm.Show(); } //右边窗体中有文件/文件夹被选中 else { //显示被选中的第一个文件/文件夹的属性 AttributeForm attributeForm = new AttributeForm(lvwFiles.SelectedItems[0].Tag.ToString()); attributeForm.Show(); } }
//将搜索结果显示在文件列表上 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(""); } }
//显示进程列表 private void ShowProcesses() { lvwProcess.Items.Clear(); //获取本机的当前所有正在运行的进程 Process[] processesList = Process.GetProcesses(); //当前进程数 txtCurProcessNum.Text = processesList.Length.ToString(); //有些进程无法获取启动时间和文件名信息,所以要用try/catch try { foreach (Process process in processesList) { //进程名称 ListViewItem item = lvwProcess.Items.Add(process.ProcessName, IconsIndexes.Process); //进程Id item.SubItems.Add(process.Id.ToString()); //专用内存大小 item.SubItems.Add(AttributeForm.ShowFileSize(process.PrivateMemorySize64).Split('(')[0]); //虚拟内存大小 item.SubItems.Add(AttributeForm.ShowFileSize(process.VirtualMemorySize64).Split('(')[0]); //启动时间 item.SubItems.Add(process.StartTime.ToLongDateString() + process.StartTime.ToLongTimeString()); //基本优先级 item.SubItems.Add(process.BasePriority.ToString()); //路径 item.SubItems.Add(process.MainModule.FileName); } } catch (Exception e) { } }
//在右窗体中显示指定路径下的所有文件/文件夹 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(); }