多标签页:像浏览器一样开多个文件夹,每个独立,地址栏和状态栏跟着切换。
收藏夹和历史记录:能保存常用路径,自动记录访问过的文件夹,关闭程序再打开也还在(用的XML存数据)。
文件搜索:递归搜文件夹和文件。
VBA解释器:引入复制、剪切、删除、改名等函数,支持正则表达式
右键菜单:打开、新标签页打开、复制、剪切、删除、重命名、添加到收藏夹,该有的都有。
系统图标:用了Windows API,能拿到文件本身的图标,看起来和系统资源管理器一样。
快捷键:Ctrl+C/X/V/A都支持,地址栏回车直达。
1. 多标签页与导航
新建标签页:NewTab(Optional path As String) 方法创建 TabPage 并嵌入 FileExplorerControl,同时订阅所有事件。
地址栏同步:通过 Explorer_PathChanged 事件更新当前标签页的地址栏文本;TabControl_SelectedIndexChanged 确保切换标签页时地址栏随之刷新。
后退/前进/向上/刷新:直接调用当前 FileExplorerControl 的公开方法(如 GoBack、GoForward、GoUp、RefreshCurrent)。
2. 收藏夹与历史记录
数据持久化:使用 XmlSerializer 将路径列表序列化为 XML 文件,存储在 %LOCALAPPDATA%\FilesManager\ 下,实现关闭程序后数据不丢失。
收藏夹树:TreeView 动态绑定到 favorites 列表,节点显示名称通过 GetDisplayName 方法特殊处理(桌面、文档、下载显示友好名称)。
历史记录树:同样持久化,双击可导航,支持清空操作。
3. 文件搜索(SearchDialog)
递归搜索:自定义 SearchDirectory 方法,遍历所有子目录,同时匹配文件名和文件夹名。
异常处理:捕获 UnauthorizedAccessException 并添加提示项,保证搜索不因权限问题中断。
结果展示:用 [文件] 或 [文件夹] 前缀区分类型,选中后提取真实路径并打开所在文件夹。
4. VBA 批量操作解释器(VBAInterpreterForm)
界面动态响应:所有输入控件(操作类型、路径、模式、正则复选框)的更改事件均触发 UpdateScriptDisplay,实时生成对应的 VBA 脚本模板(占位符替换为实际输入)。
正则支持:当勾选“使用正则表达式”时,获取文件列表改用 Directory.GetFiles(source) 后结合 Regex.IsMatch 过滤;否则直接用 GetFiles(source, pattern)。
操作执行:批量复制/剪切/删除/改名分别调用 File.Copy、File.Move、File.Delete,并在操作完成后刷新主窗体当前标签页。
5. 右键菜单与快捷键
上下文菜单:在 FileExplorerControl 中创建 ContextMenuStrip,动态添加菜单项,并通过 FileContextMenu_Opening 事件根据选中项类型(如驱动器)启用/禁用相应项。
全局快捷键:重写 ProcessCmdKey 方法捕获 Ctrl+C、Ctrl+X、Ctrl+V、Ctrl+A,分别调用 CopySelected、CutSelected、Paste、SelectAll。