首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SaveFileDialog阻止可移动驱动器

SaveFileDialog阻止可移动驱动器
EN

Stack Overflow用户
提问于 2009-01-16 17:45:46
回答 1查看 592关注 0票数 3

我使用SaveFileDialog让用户选择可移动驱动器上的目录和文件名。然后,我创建该文件,对其进行写操作,然后再次关闭它。

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

顺便说一句,即使我只用SaveFileDialog挑选文件,驱动器也会被锁定。点击对话框上的"Cancel“不会导致问题

代码语言:javascript
运行
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-19 16:04:10

我找到了2个解决方案

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

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

代码语言:javascript
运行
复制
String oldDir = Directory.GetCurrentDirectory();
// ... do dialog...
Environment.CurrentDirectory = oldDir;

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

代码语言:javascript
运行
复制
dlg.RestoreDirectory = true;
dlg.ShowDialog()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/451340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档