65.9K
CodeProject 正在变化。 阅读更多。
Home

带标签和并行文件搜索工具的文件浏览器克隆

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (15投票s)

2018 年 4 月 22 日

CPOL

6分钟阅读

viewsIcon

28266

本文介绍如何使用 Winforms、WPF 和 C# 创建一个带标签的资源管理器克隆,以及一个极其快速的并行文件搜索实用程序。

引言

本文介绍如何使用 Winforms、WPF、C# 创建一个带标签的资源管理器克隆,其中包含一个极其快速的并行文件搜索实用程序。我使用此资源管理器来创建和组织三种类型的存储库:自动化冗余计算机任务的 C# WPF 项目;知识库;和待办事项列表。

这是资源管理器克隆在列表视图中的截图


(点击放大)

这是资源管理器克隆在详细信息视图中的截图


(点击放大)

背景

我最初的目标是自动化解决问题本身,但在尝试这样做的过程中,我最终创建了一个资源管理器克隆。我之所以想自动化解决问题,是因为我看到了一个普遍的模式,并且我大部分编程时间都花在执行解决问题的任务上。

以下是可用于解决任何问题的通用模式或算法

当“实际”与“理想”之间存在“差距”时,就会出现问题。

  1. 解决问题的第一步是比较实际情况与理想情况,找出**差异**。
  2. 一旦确定了差异,我们就需要将这些差异转化为我们知道如何执行的操作。
  3. 一旦差异被转化为操作,我们就对实际情况执行这些操作,以将其转换为理想情况。

**人工智能**使用上述步骤来解决问题。AI 拥有一个已知的可执行操作的知识库,并利用这些操作来消除事物实际情况与理想情况之间的差异。

知识库可用于存储我们对某物的理解(用人类语言表示)与计算机理解(用计算机语言编写的脚本)之间的翻译。知识库充当键值对字典,人类语言是“键”,计算机语言脚本是最终的“值”。

就像谷歌地图在两个地点之间找到最短距离一样,AI 利用知识库来确定执行最少的操作即可将实际问题状态转换为理想解决方案状态。

我最初想创建一个应用程序为我执行上述解决问题的步骤,但这被证明太复杂了。因此,我编写了许多小型 C# WPF 应用程序来自动化我懂得的各种小任务。在编写了许多这些小型 C# WPF 应用程序之后,我意识到我需要一种简单的方法将这些小型操作脚本放入某种知识库并通过热键启动它们。

这就是我创建这个带标签的资源管理器克隆的原因。我决定为我的资源管理器克隆添加标签,因为我不喜欢资源管理器在您想查看不同文件夹时每次都要求您打开一个不同的资源管理器实例的方式。标签还提供了允许您保存您在多个文件资源管理器中的位置以便以后返回的好处。

为了对知识库中的信息进行分类,您需要能够创建类别和子类别,而不仅仅是文件夹。类别/子类别与普通文件夹的区别在于,类别/子类别允许您在离开文件夹结构时保留已展开/关闭的状态,而文件夹则不允许。

我很快意识到我经常喜欢在不退出资源管理器克隆的情况下即时编辑或查看文件,这就是我创建预览模式的原因。


(点击放大)

搜索是任何知识库中的另一项重要功能,因此我添加了一个搜索图标,单击后会在后台执行并行搜索。搜索允许您在文本、单词或 Open Office 文件中查找所有出现的 string 或正则表达式,这些文件包含在父文件夹的所有子文件夹中。您可以使用热键导航到结果文件中的特定行,或者在新标签页中打开资源管理器克隆,该标签页指向包含找到的文本的文件所在的直接父文件夹。


(点击放大)

为了给文件夹/文件添加热键、元数据和其他功能,我在用户右键单击文件夹/文件时添加了一个上下文菜单。

Using the Code

最简单的入门方法就是下载可执行文件。但是,如果您下载源代码,您会发现它包含多个解决方案和项目。这些解决方案和项目演示了您可以自动化并使用资源管理器克隆完成的各种事情。由于本文仅关注资源管理器克隆,因此您需要构建的解决方案是名为 IdealAutomateExplorer 的那个。

IdealAutomateExplorer 解决方案包含三个项目:dgFilterPopupIdealAutomateExplorer;和 IdealSqlTracer

dgFilterPopup 是一个出色的库,它允许为 datagridview 添加过滤功能。这个项目不是我写的,我非常感谢 Vincenzo Rossi 在他精彩的 CodeProject 文章中分享了有关此库的信息。这是该库为资源管理器克隆添加功能的截图

IdealAutomateExplorer 解决方案中的第二个项目是 IdealAutomateExplorer 项目。该项目中的主页面是 ExplorerView.cs 页面。该页面包含 tabControl。在 tabControl 的每个 tabPage 中,有一个 splitContainersplitContainerPanel1 用于容纳当前选项卡文件夹的 datagridview。在预览模式下,Panel2 用于显示在 datagridview 中选定的文件。Wordpad 用于打开任何 Word 类型文档,因为 Wordpad 是每个人计算机上都应有的免费工具,而 Word 则不是。

解决方案中的第三个项目是 IdealSqlTracer。可以通过 Tools/Sql/IdealSqlTracer 菜单选项访问 IdealSqlTracerIdealSqlTracer 为您提供了 SqlProfiler 的替代方案,允许您捕获任何桌面或 Web 应用程序背后的所有 SQL。IdealSqlTracer 的一个优点是它会捕获 SQL 并对其进行格式化,使其易于阅读。帮助屏幕中有大量文档可供您了解更多关于这个强大工具的信息。

关注点

该应用程序有两个存储信息的地方,以便在应用程序关闭时可以保留信息。

第一个地方是文件目录结构本身。每当您添加类别或子类别时,有关该类别/子类别是否展开的信息都会放置在一个名为... IdealAutomate 的文件夹中。

信息的第二个存储位置是漫游目录。在我的计算机上,此文件夹的名称为 C:\Users\harve\AppData\Roaming\IdealAutomate\IdealAutomateExplorer,但在您的计算机上,名称会略有不同。有称为 SetValueByKeyGetValueByKey 的方法,用于将信息放入此漫游文件夹以及从中检索信息。

历史

  • 2018 年 4 月 21 日:最初提交发表
© . All rights reserved.