OpenFileDialog和Environment.CurrentDirectory

使用OpenFileDialog选择文件后, Environment.CurrentDirectory更改为该文件的文件夹。 这是正常的吗?

从我的理解Environment.CurrentDirectory应该始终是应用程序文件夹。

因为对话框在搜索文件或文件夹时更改了Environment.CurrentDirectory ..或者选择它们进行上传..等等。

注意:如您对问题的评论中所示,请在链接到重复问题后使用

 FileDialog.RestoreDirectory property. 

看一下

AppDomain.CurrentDomain.BaseDirectory和Environment.CurrentDirectory的区别

有什么不同之处?

  1. AppDomain.CurrentDomain.BaseDirectory
  2. Environment.CurrentDirectory
  3. AppDomainSetup.ApplicationBase

1和3基本相同。 区别在于AppDomainSetup.ApplicationBase是可写的,但AppDomain.BaseDirectory是只读的,因为在创建appdomain后无法更改它。

2是完全不同的东西。 它用于解决相对路径等问题。 您可以随时在代码中更改CurrentDirectory,也可以通过FileDialogs之类的内容进行更改。

是的,这是正常的,当前目录并不总是应用程序文件夹。 运行cmd并使用cd命令更改目录。 您刚刚更改了Environment.CurrentDirectory中显示的相同值! 当用户通过命令行或类似机制指定文件名时,您应该只使用当前目录值。 如果您希望应用程序文件夹使用Application.StartupPath属性。