关于FileDialog的路径问题
InitialDirectory |
RestoreDirectory |
使用Reset() |
每次运行初始位置 |
运行时记忆 |
CurrentDirectory初始值 |
CurrentDirectory改变 |
有效 |
True |
False |
设置的初始值 |
True |
%startup% |
False |
有效 |
False |
False |
设置的初始值 |
True |
%startup% |
True |
无效或未设置 |
True |
False |
上一次运行的值 |
True |
%startup% |
False |
无效或未设置 |
False |
False |
上一次运行的值 |
True |
%startup% |
True |
有效 |
重置项 |
True |
设置的初始值 |
False |
%startup% |
重置项 |
无效或未设置 |
重置项 |
True |
上一次运行的值 |
False |
%startup% |
重置项 |
1. FileDialog[1] 在使用中,其RestoreDirectory属性很少被用到,这是因为它只与System.Environment.CurrentDirectory的值有关[2](也可以通过System.IO.Directory.GetCurrentDirectory() 方法获取),而与FileDialog实例所使用的路径无关。
2. 当程序中不使用FileDialog.Reset() 方法时,InitialDirectory的值只在程序每次运行第一次调用FileDialog.ShowDialog() 方法时有效,后续调用打开对话框时将使用上一次的路径,这是由系统记忆的[3]。
3. 若要在程序中控制任意一次FileDialog.ShowDialog() 所使用的路径,则应将FileDialog.Reset() 和 InitialDirectory属性配合使用,调用Reset方法后FileDialog实例的所有属性均被重置,因此其他必要配置(如FileName、Filter、RestoreDirectory属性等)均需要重新指定,但是不需要对事件进行重新关联。
[1] FileDialog是文件对话框的基类,此处代表其所有子类,包括OpenFileDialog和SaveFileDialog。
[2] 当RestoreDirectory设置为True时,CurrentDirectory的值将保持在程序根目录下不会发生改变,否则将随对话框使用的路径而改变。
[3] 根据C++相关的帖子中透露,CFileDialog的路径保存在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\ LastVisitedMRU中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界