【问题标题】:microsoft.win32.savefiledialog issue in windows xpWindows XP 中的 microsoft.win32.savefiledialog 问题
【发布时间】:2013-08-29 07:27:15
【问题描述】:

我正在使用 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 也很常见,我尝试了很多,当我从文件对话框窗口中选择一个文件夹时会出现问题。之后无需执行任何操作,只需选择文件夹形式的保存文件对话框即可。该文件夹无法删除。

【问题讨论】:

  • 请注意,您没有显示保存文件的代码...请确认问题与保存代码本身无关(即即使您不保存文件但只是获取文件名仍然看到文件夹被锁定)。
  • @Sayse 当我尝试添加时使用它给出错误提示 microsoft.win32.savefiledialog 应该实现 IDisposable 接口。
  • @AlexeiLevenkov 仅当我将文件保存在所选文件夹中时才会发生这种情况
  • 啊抱歉,把它和 OpenFileDialog 搞混了。你应该在实际出错的地方包含代码

标签: c# winforms dialog windows-xp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多