открытие файлового браузера, который не имеет доступа к локальному диску C в C#

var  dlgs = new System.Windows.Forms.OpenFileDialog();
       dlgs.CustomPlaces.Clear();
       var ListDrives = DriveInfo.GetDrives();
       foreach (DriveInfo Drive in ListDrives)
       {
            if ((Drive.DriveType == DriveType.Fixed) && (Drive.Name != "C"))
            {
                dlgs.CustomPlaces.Add(Drive.Name);

            }
           dlgs.ShowDialog();
       }

Я пытаюсь открыть файловый браузер, который не должен иметь доступа к локальному диску C, чтобы пользователь мог выбирать папки с файлами с остальных локальных дисков, таких как («D», «E»).


person Praveen Ez    schedule 25.03.2016    source источник
comment
Прояснить. В чем твоя проблема? Каков эффект вашего текущего кода? Кроме того, вы вызываете ShowDialog() внутри вашего foreach.   -  person Nyerguds    schedule 25.03.2016
comment
Возможный дубликат C# OpenFileDialog Lock To Directory   -  person MUG4N    schedule 25.03.2016
comment
Лучше всего было бы создать настраиваемое всплывающее окно, которое может быть пользовательским элементом управления или пользовательским элементом управления в WPF. Я делал это в прошлом. Это будет довольно просто, и вы можете делать все, что захотите.   -  person Nikhil Vartak    schedule 25.03.2016


Ответы (2)


Я просто смотрю на Документация класса OpenFileDialogue сейчас, но я не вижу ничего, что ограничивало бы пользователя определенными дисками... Этот пост заставляет меня задуматься, можно ли это сделать на самом деле; но, возможно, это можно сделать с помощью фильтр...

person Wanda B.    schedule 25.03.2016
comment
Но фильтр для файлов правильно!! Можно ли его использовать для ограничения доступа к дискам в файловом браузере..?? - person Praveen Ez; 25.03.2016
comment
@PraveenEz Ах, черт возьми, я думаю, вы правы ... Итак, вы в основном хотите, чтобы файловый браузер игнорировал существование C: и разрешал пользователям выбирать файлы только с других дисков (например, D: и E :)? Я думал, что будет какой-то способ указать все файлы, не начинающиеся с C:, в абсолютном пути... Я прочитал немного больше, и кажется, что вам придется создайте свой собственный всплывающее окно пользовательского файлового браузера! - person Wanda B.; 25.03.2016

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

Однако можно ограничить возможность открытия файла (нажатие кнопки Open или двойной щелчок действительно закроют диалоговое окно), используя FileOk.

Что-то типа:

void DialogFileOk(object sender, CancelEventArgs e)
{
  var dialog = sender as OpenFileDialog;
  if(dialog == null) return;
  if(Path.GetPathRoot(dialog.FileName) == @"C:\")
  {
    e.Cancel = true;
    // maybe show messagebox or task dialog informing the user?
  }
}

Опять же, это не помешает пользователям просматривать диск C:\, а только не позволит диалоговому окну выбрать файл на этом диске.

PS: при необходимости адаптируйте для множественного выбора.

person Jcl    schedule 25.03.2016