2016-01-26 3 views
1

У меня проблема: если вы установите имя файла в диалоговом окне в подкаталог в исходном каталоге, в который вы его установили, а затем нажав «Сохранить», диалоговое окно doesn ' t фактически сохраняет файл, но открывает вспомогательную директорию, с которой я все еще мог бы взаимодействовать.C# - Microsoft.Win32.SaveFileDialog Filename Issue

Например, если я установил исходный каталог для диалога в «C: \ MainDir», и этот каталог состоит из SubDir1, SubDir2, то в диалоговом окне сохранения я мог видеть, что я в исходной директории с двумя подписями каталоги. Если я установил имя файла в SubDir1 (без расширения) в диалоговом окне, а затем я нажал «Сохранить», что происходит, вместо сохранения файла как «filename.extension» диалоговое окно открывает каталог, указанный именем файла.

Вот что я в настоящее время:

SaveFileDialog dlg = new SaveFileDialog(); 
dlg.DefaultExt = ext; 
dlg.AddExtension = true; 
dlg.FileName = filename; 
dlg.Filter = filter; 
dlg.FileOk += OnFileDialogOk; 
dlg.InitialDirectory = dir; 
bool? dlgRes = dlg.ShowDialog(); 

Является ли это то, что может быть легко исправить?

+3

Это диалоговое окно сохранения систем Windows, и так оно всегда функционирует. Попробуйте это с помощью блокнота. – CodingGorilla

ответ

5

Быстрый Ответ: Нет

Вы не можете изменить настройки по умолчанию метод сохранения ОС Windows.

Возможно, вы можете проверить, существует ли имя файла, которое вы хотели использовать (в данном случае, SubDir) уже как каталог. Если это так, то вам нужно будет изменить это имя, поскольку это будет только проявлять поведение, которое вы уже видели.

Боковое примечание. Представьте, что у вас очень важная папка, содержащая критические файлы, и Windows позволит вам сохранить файл с именем в этом каталоге. Это катастрофа, ожидающая случиться.

+1

Я думаю, что op не хочет файла 'SubDir1', я думаю, что он хочет получить файл' SubDir1.ext' после того, как просто ввел 'SubDir1', поэтому и каталог, и файл будут существовать после сохранения. Но вы все еще правы в своем ответе, нет способа изменить поведение. –

+0

@ScottChamberlain Исправить. Это то, что я имел в виду. – Olva

1

Единственными способами я могу думать делать это немного экстремальный:

  • Вы можете свернуть свой собственный диалог
  • Вы можете изменить функциональность стандартного диалогового

ответы здесь: Customizing OpenFileDialog может помочь с этим.

Я также должен отметить, что, хотя может показаться полезным разместить этот тип ввода и автоматически добавить расширение, он будет контр-интуитивным для многих пользователей, которые будут ожидать поведения по умолчанию.

Одним словом, я бы подумал об этом дважды.