2009-01-16 62 views
3

我正在使用SaveFileDialog讓用戶在可移動驅動器上選擇一個目錄和文件名。 然後我創建該文件,寫入並再次關閉它。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 
} 

回答

4

我發現2個解決方案

一旦用戶點擊「保存」對話框改變當前的工作目錄。這不是阻止可移動驅動器的文件,而是程序本身。

所以,你要麼需要重新調整工作目錄一旦你完成:

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

,或者你只是配置文件對話框調用ShowDialog的前恢復目錄()

dlg.RestoreDirectory = true; 
dlg.ShowDialog() 
+0

好工作,感謝您發佈最終答案 – 2009-01-19 18:37:03

相關問題