2013-08-29 2 views
0

Я использую microsoft.win32.savefiledialog для сохранения файла внутри папки. Только в Windows XP после сохранения файла в папке (например: abc) я не могу удалить папку abc. Сообщение об ошибке показывает, что другой процесс использует это. Кажется, что дескрипторы остаются в выбранной папке. Пожалуйста, дайте мне решение по этому вопросу.проблема с microsoft.win32.savefiledialog в windows xp

Ниже мой диалог сохранения файла код:

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 также, я пытался Лот, выпуск happnes, когда я выбираю папку диалоговое окно файла. не нужно ничего делать после этого, просто выберите диалог сохранения формы папки. эту папку нельзя удалить.

+0

Обратите внимание, что вы не показываете код для сохранения файла ... Пожалуйста, подтвердите, что проблема не связана с сохранением самого кода (т. Е. Даже если вы не сохраняете файл, а просто получаете имя файла, которое вы по-прежнему видите в заблокированной папке) , –

+0

@Sayse, когда я пытаюсь добавить его, дает ошибку, говоря, что microsoft.win32.savefiledialog должен реализовывать интерфейс IDisposable. –

+0

@AlexeiLevenkov Это происходит, только если я сохраню файл в выбранной папке –

ответ

3

Это совершенно нормально. Это не другой процесс, который открыл объект каталога, это ваш процесс. Ваш код превратил каталог в рабочий каталог по умолчанию вашего процесса. Что-то вы можете увидеть из свойства Environment.CurrentDirectory.

Настройте свойство SaveFileDialog.RestoreDirectory, чтобы это не произошло.

Смежные вопросы