SaveFileDialog阻止可移动驱动器

时间:2009-01-16 17:45:46

标签: c# .net windows

我正在使用SaveFileDialog让用户在可移动驱动器上选择目录和文件名。 然后我创建该文件,写入它,然后再次关闭它。

到那时文件本身没有被锁定(可编辑,可删除),但我无法弹出驱动器,因为Windows声称它仍在使用中。我必须退出应用程序才能弹出。

顺便提一下,即使我只使用SaveFileDialog选择文件,驱动器也会被锁定。点击对话框中的“取消”不会导致问题

SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = ".csv";
dlg.InitialDirectory = mySettings.defaultPath;
dlg.Filter = "(CSV-Dateien) *.csv|";
dlg.FileName = exportDate.ToString("yyyy-MM-dd") + ".csv";

if (dlg.ShowDialog() != DialogResult.OK){
    // USB-Drive is ejectable
}else{
    // USB-Drive is locked
}

1 个答案:

答案 0 :(得分:4)

我找到了2 解决方案

一旦用户点击“保存”,对话框就会更改当前的工作目录。这不是阻止可移动驱动器的文件,而是程序本身。

因此,您需要在完成后重新调整工作目录:

String oldDir = Directory.GetCurrentDirectory();
// ... do dialog...
Environment.CurrentDirectory = oldDir;

或者您只需配置文件对话框以在调用ShowDialog()

之前恢复目录
dlg.RestoreDirectory = true;
dlg.ShowDialog()