.NET中使用OpenFileDialog.RestoreDirectory属性引起的恐慌!(C#)

amiboy 2008-07-22 12:05:06
前段时间在VS2005下用C#编写一个模仿Windows XP自带的记事本时,用到一个看似明了实际模糊的OpenFileDialog的属性——RestoreDirectory,在MSDN里找了下,以为弄懂了,结果不管设它为true还是false,发现并不是我理解的那样——重新打开对话框,出现的目录总就是上次打开文件的那个目录!用SaveFileDialog也试了,结果一样。
上网上找找答案,终于得到一个唯一说得过去的答案:这个属性是控制当前程序中的System.Environment.CurrentDirectory的,也就是,当属性设置为true时,System.Environment.CurrentDirectory永远是程序从中启动的文件夹目录;而设置为false是,则每次使用OpenFileDialog选择完文件后,System.Environment.CurrentDirectory会变成最后一次打开文件的目录。
此问题暂时可以告以段落,但由此我产生了不解:OpenFileDialog有没有属性可以控制使用OpenFileDialog打开文件选择对话框时定位的目录是上次打开的目录还是一个固定的初始目录??
当然,OpenFileDialog的InitialDirectory可以设定程序的初始目录,但它只在程序启动后第一次使用OpenFileDialog时生效。
找了半天发现没有我想要的属性,打开文件选择对话框时永远是上次打开文件的目录。这在程序运行过程中是可以接收的。
但问题来了,当我关闭应用程序(OpenFileDialog的InitialDirectory没有设置),再运行应用程序,选择“文件”——“打开”,突然发现当前打开的文件夹依旧是我关闭程序前最后一次打开文件的文件夹!——程序有记忆功能?(可是我没有让他记录任何历史访问文件夹记录啊!~~)
我给自己找了个近似荒唐的理由——刚关闭应用程序,内存中的信息还未回收......
玩了3小时游戏,回来重新运行程序,发现还是程序关闭前最后一次访问的文件夹~~~~~而我打开Windows XP自带的记事本时发现跟我的程序存在一模一样的问题,我想它可能是在注册表里做了记录,所以每次打开能定位到上次打开的目录。可是我的没有啊,那为什么出现这种现象?难道程序运行期间可以对我已经编译的代码做修改?在程序退出时将上次打开的目录自动赋值给OpenFileDialog的InitialDirectory属性?如果这是真的,我感觉太恐慌了:它怎么能私下向程序内添加附加属性值!这不全乱了吗?那我更想知道的是,到底哪些变量或属性能够自动记录值?
...全文
1669 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smart882004 2011-12-22
  • 打赏
  • 举报
回复
注册表是OpenFileDialog里的代码修改的,只是你不知道而已,不是编译器私自改了你的代码
smart882004 2011-12-22
  • 打赏
  • 举报
回复
注册表是OpenFileDialog里的代码修改的,只是你不知道而已,不是编译器私自改了你的代码
smart882004 2011-12-22
  • 打赏
  • 举报
回复
明显是存在注册表里的
Heroius 2011-11-13
  • 打赏
  • 举报
回复
解决方案在此:关于FileDialog的路径问题
godknowit 2010-10-29
  • 打赏
  • 举报
回复
我现在也遇到楼主一样的问题了,太诡异了,很费解啊
lws19876 2008-12-25
  • 打赏
  • 举报
回复
至于为什么不初始化就始终保持上次目录我也没搞清楚-.-!....
lws19876 2008-12-25
  • 打赏
  • 举报
回复
我遇到过这问题,我是在我的OpenFileDialog控件所在的窗体的LOAD事件里把OpenFileDialog控件的InitialDirectory属性初始化了,之后就没这种现象了,具体如下:
private void SelectFile_Load(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
}
amiboy 2008-07-22
  • 打赏
  • 举报
回复
哦,补充一句,即使重启计算机还是一样的,打开的还是最近一次打开的目录。

110,578

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧