【问题标题】:SaveFileDialog blocking removeable driveSaveFileDialog 阻止可移动驱动器
【发布时间】:2009-01-16 17:45:46
【问题描述】:

我正在使用 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
}

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

    我找到了 2 个解决方案

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

    所以你要么需要在完成后重新调整工作目录:

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

    或者您只需在调用 ShowDialog() 之前配置文件对话框以恢复目录

    dlg.RestoreDirectory = true;
    dlg.ShowDialog()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多