С# SaveFileDialog в определенной папке

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

SaveFileDialog dialog = new SaveFileDialog();
dialog.InitialDirectory = "SomePath"//this is the path that I want to be root folder

Ответ 1

Нет, это невозможно.

Вы не можете прямо установить это как свойство в SaveFileDialog. Но вы можете попытаться сделать это, используя событие FileOk, чтобы проверить, находится ли файл в этом каталоге и отменить событие!

dialog.FileOk +=
    delegate (object sender, CancelEventArgs e)
    {
        if (dialog.FileName is in wrong directory)
        {
            e.Cancel = true;
        }
    };

Как уже упоминалось, следующий лучший вариант - создать свой собственный диалог!

Ответ 2

Некоторые решения, которые приходят на ум, следующие:

Отобразить ошибку после выбора файла

Не так приятно, как предотвращать пользователя в первую очередь, но он не требует большого количества кода и довольно прост.

Создайте собственный экран выбора файлов

Очень больно выглядеть как все, к чему привык пользователь. Делает много кода.

Ответ 3

То, что я могу думать, может быть вне темы, потому что это не связано с Программой, и это может быть сложно.

Пока вы устанавливаете приложение, вы должны создать конкретного пользователя в Windows только для своего приложения.

Чем вы можете начать свое приложение. как этот пользователь, использующий приложение. Файл манифеста.

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

PS: Я не думаю, что если это решение будет платить само по себе, но это может сработать.

Salute