Фильтрация файлов, показанных в OpenFileDialog на основе содержания?

В случае, если это никогда не решалось, вот что сработало для меня:

  1. brew uninstall node
  2. brew install node
  3. brew doctor и посмотреть, что нужно обрезать. Моя проблема заключалась в том, что там было не-brew место, где я изменил место установки для пакетов npm, потому что я пытался получить пакет npm для установки для меня. Это было ошибкой (забыв, что я изначально установил узел и npm через brew, но теперь brew больше не мог получить доступ к каталогу установки npm, а также не мог изменить или удалить его). Таким образом, brew prune не работал, хотя символические ссылки якобы были удалены, но это напомнило мне, что я изменил место установки npm. И это приводит нас к:

  4. Удалить эти каталоги

  5. brew postinstall node

Надеюсь, это поможет.

7
задан Dave Clemmer 1 August 2011 в 15:46
поделиться

3 ответа

I wouldn't dismiss the complexity of the OpenFileDialog. It's not so easy to build one that really works. When you do build your own, it's not the "normal" dialog and as a result it confuses users. This is true even if you do it well, which is difficult. So I'd suggest you stick to extending what is already there, rather than writing something new.

Check this article for an extension of OFD that might/could be tweaked to do exactly what you want. There's a callback that you write in C# that responds to path selection.

Related: FolderBrowserDialogEx is a similar extension on FolderBrowserDialog. Despite the name, you can configure it to search for files, as well as folders. There's a callback that gets invoked when something (a folder, a file) is selected, and within that callback you can do what you need to do. For example, peek inside the files within a folder and populate the list of files to display with only those files.


Another option you might consider is the dialog library from Ookii. This is an open source implementation of the OpenFileDialog, and it includes COM wrappers for all the new dialog stuff in Vista. Using that library you can pop a Vista OpenFileDialog and receive events from the IFileDialogEvents interface, in C# code. One such event is OnFolderChange(). Within the handler you could call IFolder.GetFolder() which will get you an IShellItem, which gives you the folder the user is changing to. The next step would be to itemize and potentially filter the set of files, which is an exercise I will leave to the reader...

3
ответ дан 7 December 2019 в 14:37
поделиться

Нет, для этого вам придется реализовать свои собственные функции. Но, честно говоря, OpenFileDialog все равно мало что делает. Честно говоря, да, вы, вероятно, могли бы подключиться к нему, но вы бы выполняли много работы напрасно, когда настоящая работа заключается в проверке содержимого файлов, а затем вы можете написать свой собственный простой класс OpenFileDialog поверх это.

Этот вопрос может оказаться полезным относительно перечисления содержимого zip-файлов:

Как перечислить содержимое .zip-папки в C #?

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

1
ответ дан 7 December 2019 в 14:37
поделиться

Вы, вероятно, можете использовать Windows API Code Pack (поставляется с исходным кодом). Функция диалоговых окон общих файлов предоставляет гораздо больше функциональных возможностей диалоговых окон файлов, чем версии в Winforms / WPF.

http://code.msdn.microsoft.com/WindowsAPICodePack

0
ответ дан 7 December 2019 в 14:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: