[Winform] 关于 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实例的所有属性均被重置,因此其他必要配置(如FileNameFilterRestoreDirectory属性等)均需要重新指定,但是不需要对事件进行重新关联。



[1] FileDialog是文件对话框的基类,此处代表其所有子类,包括OpenFileDialogSaveFileDialog


[2]RestoreDirectory设置为True时,CurrentDirectory的值将保持在程序根目录下不会发生改变,否则将随对话框使用的路径而改变。


[3]根据C++相关的帖子中透露,CFileDialog的路径保存在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\ LastVisitedMRU中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值