.NET中使用OpenFileDialog.RestoreDirectory属性引起的恐慌!(C#)
前段时间在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属性?如果这是真的,我感觉太恐慌了:它怎么能私下向程序内添加附加属性值!这不全乱了吗?那我更想知道的是,到底哪些变量或属性能够自动记录值?