Frage

Gibt es eine Möglichkeit, das Verhalten des Openfile so zu modifizieren, dass es in den Dateien im Ordner sieht es öffnet und dann ignoriert bestimmte diejenigen, basierend auf deren Inhalt?

Ein Beispiel wäre in einen Ordner zum Öffnen von Dateien voll von Zip sondern nur die, die zeigen, dass eine bestimmte Datei enthalten.

Aus der Dokumentation gibt es die HookProc aber ich bin nicht ganz sicher, wie ich es verwenden würde.

Bitte beachten Sie, dass, wenn es möglich ist, merke ich, dass es ein relativ langsamer Vorgang sein werde. Im Moment bin ich nicht besorgt über die Leistung.

Danke!

War es hilfreich?

Lösung

Ich würde die Komplexität des Openfile nicht entlassen. Es ist nicht so einfach, einen zu bauen, das wirklich funktioniert. Wenn Sie Ihre eigenen bauen, dann ist es nicht die „normale“ Dialog und als Ergebnis verwirrt es Benutzern. Dies gilt auch, wenn Sie es tun gut, was schwierig ist. Also würde ich vorschlagen, dass Sie halten fast zu, was schon da ist, anstatt zu schreiben, etwas Neues.

Überprüfen Sie diesem Artikel für eine Verlängerung der OFD , die sein könnte / könnte gezwickt genau das zu tun, was Sie wollen. Es gibt einen Rückruf, den Sie in C # schreiben, die Auswahl an Pfad reagiert.

Siehe auch: FolderBrowserDialogEx ist eine ähnliche Erweiterung auf Folder. Trotz des Namens können Sie es so konfigurieren, Dateien sowie Ordner zu suchen. Es gibt einen Rückruf, der aufgerufen wird, wenn etwas (ein Ordner, eine Datei) ausgewählt wird, und in diesem Rückruf können Sie tun, was Sie tun müssen. Zum Beispiel in einem Ordner innerhalb der Dateien spähen und die Liste der Dateien füllen nur mit den Dateien anzuzeigen.


Eine weitere Option, die Sie betrachten könnte, ist die Dialog Bibliothek von Ookii . Dies ist eine Open-Source-Implementierung des Openfiledialog und umfasst COM-Wrapper für alle neuen Dialog Sachen in Vista. Mit Hilfe dieser Bibliothek können Sie ein Vista Openfile Pop und empfangen Ereignisse aus der IFileDialogEvents Schnittstelle, # -Code in C. Ein solches Ereignis ist OnFolderChange (). Im Handler könnte man nennen IFolder.GetFolder (), die Sie erhalten eine IShellItem , mit dem Sie den Ordner, gibt der Benutzer ändert. Der nächste Schritt wäre aufzuschlüsseln und möglicherweise den Satz von Dateien zu filtern, die eine Übung, die ich den Leser überlassen werde ...

Andere Tipps

Nein, würden Sie haben Ihre eigene Funktionalität für das implementieren. Aber um ehrlich zu sein, wird die Openfile wirklich nicht viel sowieso tun. Um ehrlich zu sein, ja, Sie könnten wahrscheinlich in sie Haken, aber Sie würden eine Menge Arbeit für nichts tun, wenn die eigentliche Arbeit ist, den Inhalt der Dateien zu überprüfen und dann können Sie Ihre eigene einfache Openfile Klasse schreiben auf der Oberseite das.

Sie können diese Frage hilfreich in Bezug auf Inhalt von Zip-Dateien Auflistung:

Wie Sie den Inhalt einer aufzulisten .zip Ordner in c #?

(Beachten Sie, Sie möglicherweise es die Leistung zu verbessern fädeln könnte, nicht überspannen nur nicht viele Threads)

Sie können sich wahrscheinlich die Windows-API-Code-Pack verwenden (kommt mit der Quelle). Die Common File Dialoge Funktion viel mehr Funktionalität von Dateidialogen macht als die Versionen in WinForms / WPF.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top