Restricted FolderBrowserDialog, рекомендуемое решение - PullRequest
2 голосов
/ 06 июля 2011

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

Мы погуглили и нашли несколько решений:

  • Реализация нашего собственного FolderBrowserDialog: не хватает времени для этого, только в качестве крайней меры
  • Этот парень сделал это для OpenFileDialog, может работать, но кажется немного излишним

Кто-нибудь сталкивался с этой проблемой и нашел для нее оптимальное решение? Должно быть совместимо с .NET 4.0

Ответы [ 2 ]

1 голос
/ 13 июля 2011

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мы являемся разработчиками FolderView, упомянутых выше.

0 голосов
/ 22 июля 2011

В конце концов, мы решили это, внедрив собственный контроль. Это было намного проще, чем мы думали. Короче говоря, мы только что сделали класс, унаследованный от System.Windows.Forms.Form, с System.Windows.Forms.TreeView слева и System.Windows.Forms.ImageList справа, чтобы показать содержимое текущей папки. Затем мы использовали DllImport'ы SHGetFileInfo и ExtractIconEx из Shell32, чтобы значки TreeView и ImageList выглядели как Explorer и вуаля!

...