0

我正在使用 microsoft.win32.savefiledialog 将文件保存在文件夹中。仅在 windows XP中,将文件保存在文件夹中(例如:abc)后,我无法删除 abc 文件夹。显示错误消息说另一个进程正在使用它。似乎句柄保留在选定的文件夹上。请给我一个解决方案。

以下是我的保存文件对话框代码:

SaveFileDialog fileDialog = new SaveFileDialog();

fileDialog.DefaultExt = !string.IsNullOrEmpty(this.DefaultExtension) ? this.DefaultExtension : "*.*";
fileDialog.Filter = !string.IsNullOrEmpty(Filter) ? Filter : "All Files|*.*";
fileDialog.FileName = !string.IsNullOrEmpty(this.FileName) ? this.FileName : string.Empty;
fileDialog.InitialDirectory = !string.IsNullOrEmpty(this.DefaultPath) ? this.DefaultPath : string.Empty;

if (fileDialog.ShowDialog().Value == true)
{
    fileName = fileDialog.FileName;
}
else
{
    fileName = string.Empty;
}            

return fileName;

编辑:

这对于 System.Windows.Forms 也很常见,我尝试了很多,当我从文件对话框窗口中选择一个文件夹时会发生问题。之后无需执行任何操作,只需选择文件夹形式的保存文件对话框即可。该文件夹无法删除。

4

1 回答 1

3

这是完全正常的。打开目录对象的不是另一个进程,而是您的进程。您的代码将该目录设为进程的默认工作目录。您可以从 Environment.CurrentDirectory 属性中看到一些内容。

将该SaveFileDialog.RestoreDirectory属性设置为 true 可以避免这种情况。

于 2013-08-29T13:18:48.573 回答