Le site OpenFileDialogEx, beschrieben in diesem CodeProject-Artikel ist eine Erweiterung des standardmäßigen OpenFileDialogs. Der Hauptzweck dieser Erweiterung besteht darin, die Anzeige des Dialogs zu ändern, aber es gibt auch einige zusätzliche Funktionen. Zum Beispiel fügt OFDEx einige Ereignisse hinzu, z. B. Datei geändert, Ordner geändert usw.
Jemand hat darauf hingewiesen, dass die CDN_INCLUDEITEM-Benachrichtigung den Wunsch zu erfüllen scheint, die Liste der im Dialogfeld angezeigten Dateien zu filtern. Das scheint der Fall zu sein, ist es aber nicht. CDN_INCLUDEITEM tut nicht das, was Sie vielleicht denken oder wollen.
Nach Angaben von dieser MSDN Mag Artikel ,
I OFN_ENABLEINCLUDENOTIFY erstellen, sendet Windows Ihrer Hook-Prozedur eine CDN_INCLUDEITEM Benachrichtigung für jedes Element, das es der der offenen Liste hinzufügt. Wenn Sie FALSE zurückgeben, schließt Windows das Element aus. Das Problem ist, dass Windows Sie nicht benachrichtigt, wenn o wie Namespace-Erweiterungen. Wenn Sie die Dokumentation durch eine Vergrößerungsglas lesen, ist der Druck ganz klar: "Das Dialogfeld enthält immer Elemente, die sowohl die die SFGAO_FILESYSTEM und SFGAO_FILESYSANCESTOR Attribute haben, unabhängig von dem Wert, der von CDN_INCLUDEITEM ZURÜCKGEGEBEN WIRD." Offensichtlich haben die [ ] für ihre eigenen Zwecke hinzugefügt, die nicht das Filtern gewöhnlicher Dateinamen beinhaltete.
Mit anderen Worten, als Antwort auf CDN_INCLUDEITEM können Sie für normale Dateien nicht FALSE zurückgeben, um sie vom Dialog auszuschließen. Im Gegensatz zum Dokument, das besagt, dass die Antwort von CDN_INCLUDEITEM für reguläre Dateien ignoriert wird, ist meiner Erfahrung nach CDN_INCLUDEITEM nicht einmal gesendet für normale Dateien, zumindest nicht auf meinem Vista-Rechner.
Ist es also möglich, Dateien dynamisch auszuschließen? Nun, ja, in C++. Als Antwort auf die CDN_FOLDERCHANGED-Meldung können Sie den Inhalt der CListCtrl, die die Dateien enthält, abrufen und festlegen. Ich habe noch nicht herausgefunden, wie man diese Liste in C# einstellen kann.