Как остановить перезапись при создании SaveFileDialog с помощью GetSaveFileName - PullRequest
1 голос
/ 01 апреля 2011

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

На самом деле я создаю savefiledialog, используя функцию Windows - GetSaveFileName, потому что я настроил диалог, используя hookProc ... Пожалуйста, ответьте, если кто-нибудь знает ...

Спасибо

Ответы [ 6 ]

2 голосов
/ 02 апреля 2011

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

При создании SaveFileDialog с помощью функции Windows GetSaveFileName, мы должны отправить ссылку на структуру OPENFILENAME (считайте, что она отсутствует), которая содержит детали, необходимые для создания savefiledialog. В этой структуре мы должны установить флаги для того, что нам нужно, поэтому, если мы хотим остановить запрос на перезапись, мы не должны устанавливать для него флаг:

Значение флага должно быть ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY;

вместо

ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_NOTESTFILECREATE | OFN_ENABLEHOOK | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

2 голосов
/ 01 апреля 2011

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

2 голосов
/ 01 апреля 2011

Попробуйте это:

SaveFileDialog dialog = new SaveFileDialog();
dialog.OverwritePrompt = false; //Removes warning
dialog.ShowDialog();
1 голос
/ 01 апреля 2011

Мне кажется, что вы на самом деле хотите, чтобы пользователь выбрал папку, чтобы вы могли затем заполнить ее файлами. В этом случае вы должны использовать FolderBrowserDialog. Он был разработан, чтобы позволить пользователю выбрать папку.

0 голосов
/ 01 апреля 2011

Вы можете установить для свойства OverwritePrompt значение false, например:

 SaveFileDialog dialog = new SaveFileDialog();
 dialog.OverwritePrompt = false;
 dialog.ShowDialog();
0 голосов
/ 01 апреля 2011

Из .NET SDK:

Класс SaveFileDialog

...

Свойства

...

OverwritePrompt - Получает или задает значение, указывающее отображает ли диалоговое окно Сохранить как предупреждение, если пользователь указывает имя файла, которое уже существует.

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

...