Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вызов альтернативного диалога выбора папки, аля VS. Как?

9.7K
29 мая 2011 года
Vitamant
228 / / 07.02.2011
C#, VS2010
В VS2010, при создании нового проекта, предлагают выбрать директорию, в которой он будет базироваться. При этом вызывается диалог, всеми родинками похожий на OpenFileDialog, только без фильтра, отображающий только папки и с кнопкой "Выбор папки" вместо "Открыть". Вопрос всего один - как его добыть и использовать в своих приложениях? FolderBrowserDialog - штука до омерзения неудобная! Поковырялся рефлектором в OpenFileDialog - он тащит за собой кучу внутренних классов и методов, разразосся на 2к строк и мне показалось, что дальнейшее его восстановление - процесс более трудоемкий, чем написание собственной формочки. А потом вспомнил про то, что такую формочку я уже где-то видел. Если это возможно сделать - подскажите, пожалуйста, как?

Заранее спасибо.
14
29 мая 2011 года
Phodopus
3.3K / / 19.06.2008
Ну это ихний собственный диалог. Не думаю что он доступен отдельно в какой-либо assembly, или что ее можно распространять со своим приложением. А про какую виденную формочку речь - не очень понял.
9.7K
29 мая 2011 года
Vitamant
228 / / 07.02.2011
Ну, имелся ввиду этот самый диалог.
Очень жаль. Если бы его можно было хотя бы расковырять... распространение - дело десятое. Пишу для внутреннего пользования... Эх, придется, видимо, все-таки смастерить собственную форму. Можно, конечно, унаследоваться от CommonDialog, но я все еще очень слабо представляю себе взаимодействие внутренностей контролов...
9.7K
29 мая 2011 года
Vitamant
228 / / 07.02.2011
Почти написал форму. Как закончу - выложу. Пока же вопрос - как эту самую форму превратить в пользовательский контрол, отображающийся на панели инструментов?

---


Осталось еще чуть-чуть подрихтовать, одну багу отладить, и готово... Эх, но какой же он кривой и аляповатый. =\
7
30 мая 2011 года
@pixo $oft
3.4K / / 20.09.2006
У меня,наверное,не очень приличный,но всё же вопрос–зачем городить своё,если в системе есть удобные для этого функции?
9.7K
30 мая 2011 года
Vitamant
228 / / 07.02.2011
Итак, альфа формы готова! Если кому пригодится - пользуйтесь. Если кто поможет добрым советом по улучшению - спасибо! (кривая до жути, но, вроде, пашет). :)
[ATTACH]5168[/ATTACH]

@pixo $oft
Никогда не изобретаю велосипеды, если есть уже готовые решения. Увы, удобных решений нет.
1) FolderBrowserDialog не позволяет выбрать несколько папок - мне нужно несколько.
2) FolderBrowserDialog - это ужасно неудобная хреновина с деревом каталогов, без возможности ввода пути ручками (скопировал из открытого explorer\far\total 'а), с необходимостью каждый раз (при каждом запуске программы) переходить в нужную папку, раскрывая по очереди все вышестоящие. Единственный способ указания пути - RootFolder (или как его), который ограничивает область видимости. Итого - ужас, которым невозможно пользоваться. Не зря мелкомягкие нарисовали свой диалог в VS. А мне сейчас хочется его воспроизвести, облагородить, и засунуть в шкуру контрола.
7
30 мая 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: Vitamant
FolderBrowserDialog не позволяет выбрать несколько папок - мне нужно несколько

Что-то не заметил этого в твоих постах,вот и удивился.А вообще,есть не только компоненты WinForms,может статься,что другими средствами задача решается легче

9.7K
31 мая 2011 года
Vitamant
228 / / 07.02.2011
Какими например? В том же WPF точно такой же диалог. Его точно также придется переписывать. :) Собственно, на WPF написать изначально и хотел, однако пишу под чужую платформу с использованием SDK, который пока поддерживает только WinForms.
277
31 мая 2011 года
arrjj
1.7K / / 26.01.2011
Вообще этот диалог есть в Vista и Win7 в качестве части платформы, в XP его нет и в XP вызывается старого стиля FolderBrowserDialog.
пруф
[quote=msdn]
Open Folder

* For new programs, use the Open Files dialog in the "pick folders" mode. Doing so requires Windows Vista or later, so use the Open Folder dialog for programs that run in earlier versions of Windows.
o Developers: You can use the Open Files dialog in the "pick folders" mode by using the FOS_PICKFOLDERS flag.
[/quote]
А вот пример на C# (если виста и выше вызывается новый диалог, если XP и ниже - старый)

P.S. и ещё с мсдн'а:
Цитата:

Use the common dialogs for a consistent user experience. Don't create your own.

9.7K
31 мая 2011 года
Vitamant
228 / / 07.02.2011
Интересно! Спасибо большое! Увы, как уже было сказано - функционала стандартного диалога не хватает. Как минимум возможности выбирать несколько папок. Максиум - автоматический выбор директории по-умолчанию (но не корневой) и удобства использования. К сожалению, за исключением моей и еще нескольких машин, на работе все сидят на XP и мучить людей стандартным диалогом не хочется. Вот и приходится писать свои диалоги и не пользоваться обычными. :)

P.S. В любом случае - спасибо за расширение кругозора!
77K
17 ноября 2011 года
INFEL8
1 / / 17.11.2011
спасибо за код, а то уж думал самому придётся писать или подольше искать.
у иностранцев кстати предлагается делать это на основе treeview,
не знаю как там что, не особо вникал.
они там ещё хотели и файлы выбирать тем же диалогом.

этот диалог немного доработать бы и хорошо будет совсем.
ну файлы выбрать я наверное и сам приделаю если понадобится.
сейчас пока мне только папки выбирать надо.

ещё раз спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог