C # SaveFileDialog в определенной папке - PullRequest
10 голосов
/ 09 января 2012

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

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

Ответы [ 3 ]

9 голосов
/ 09 января 2012

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

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

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

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

0 голосов
/ 09 января 2012

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

Во время установки приложения вам следует создать конкретного пользователя в Windowsтолько для вашего приложения.

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

После этого вы можете дать этому конкретному пользователю разрешение на запись только в корневую папку, так ОС будет контролировать это.

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

Салют

0 голосов
/ 09 января 2012

Вот некоторые решения, которые приходят на ум:

Отображение ошибки после выбора файла

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

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

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

...