Frage

Ich versuche, einen Filter auf meinem C # Openfile zu setzen, die bestimmte Dateierweiterungen ausschließt. Zum Beispiel möchte ich es alle Dateien in einem Verzeichnis zeigen, die nicht TXT-Dateien sind.

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Es gibt keinen direkten Weg, dies mit dem BCL Openfile zu tun.

Ich kann von ein paar Optionen denken:

1) Stellen Sie einen Filter, der nur alle Typen haben Sie nicht möchten, unterstützen. Das wäre meine Empfehlung sein, denn das ist die häufigste Art und Weise über diese Art von Betrieb gehen.

2) Verwenden Sie etwas entlang der Linien von dieser benutzerdefinierte Openfile Implementierung . Sie könnten dann die OnFileNameChanged () -Methode überschreiben, um möglicherweise die Schaltfläche „Öffnen“ zu deaktivieren, wenn die ausgewählte Datei eine .txt-Erweiterung hat.

3) Lassen Sie den Benutzer eine TXT-Datei auswählen, einen Fehlerdialog erbrechen, und die Datei-Dialog wieder aufzunehmen. Das fühlt sich klobig und nicht zu groß für mich, obwohl ....

Andere Tipps

Ich glaube nicht, das ist möglich. Die Art und Weise der Filter eingerichtet ist, ist, dass Sie auswählen können, welche zu zeigen, Dateien, aber ich glaube nicht, es gibt einen Weg zu zeigen, „außer Alle Dateien ...“. Kommen Sie, daran zu denken, haben Sie schon einmal eine Datei öffnen Dialog in Windows zu sehen, dass dies? Ich glaube nicht, das ich je gesehen habe.

Am besten ist es, sie wählen, um alle Dateien zu lassen und dann den Benutzer auffordern, wenn sie eine auswählen, die nicht erlaubt ist, oder filtern sie auf alle möglichen Dateien herunter, die Sie mit umgehen können.

Gefunden mit Google-Suche "Openfile"

EDIT: Tut mir leid, nicht auf den AUSGESCHLOSSEN Aspekte erweitert. Sie können nicht auf diesen extremen gehen müssen, aber es würde Ihre Bedürfnisse erfüllen ....

  • Starten Sie eine rekursive Verzeichnissuche aller Dateien, die der Benutzer auswählen kann. (Hoffentlich ist das eine kleine Gruppe von Ordnern.)
  • eindeutig identifizieren die Erweiterungen auf diese Dateien. (System.IO.Path.GetExtension () und Linq der .Distint () -Methode kann auch hier arbeiten)
  • Nehmen Sie den ".txt" Eintrag aus der Liste.
  • Erstellen Sie eine Filterzeichenfolge, indem sie durch diese Erweiterungen Looping.

Ich fürchte, dies ist nicht möglich. Sie werden entweder haben

  • a) eine lange Liste aller Erweiterungen, die erlaubt sein sollte, oder

  • b) Lassen Sie alle Erweiterungen und dann eine einfache Prüfung in Code verwenden, den Dialog wieder geöffnet, wenn die ausgewählte Dateierweiterung .txt hat.

Auch könnten Sie ein bisschen mehr Kontext für diese Frage geben? Ich habe Probleme, ein Szenario vorsieht, wo ich explizit auf ausschließen müssen möglicherweise eine gewisse Ausdehnung. Sie können sich wahrscheinlich nur mit einem Filter (und vielleicht ein bisschen überprüft in Code) in fast allen Situationen nicht weg.

Hier ist ein völlig anderer Ansatz, die Sie wahrscheinlich nicht zu verwenden sind.

Statt der Verwendung von Openfiledialog, analysieren die spezifischen Funktionen, die Sie benötigen und Ihr eigenes Dialogfeld erstellen. Sie könnten leicht zur Verfügung stellen, was Filtern Sie wollen, aber dann die Schwierigkeit bewegt sich über die Implementierung und die neue Benutzeroberfläche beibehalten wird.

Ich schlage vor, Sie nicht, dass Sie dies tun, aber manchmal Benutzer sind eher hartnäckig auf das, was sie brauchen.

Eine weitere alternative: Statt einen Dialog zu verwenden, kommen mit etwas ganz anderes, die gut innerhalb der App passt. Dies kann nicht möglich sein, aber dann wissen wir nicht viel über die App.

Sie können einen Filter auf ausschließen Erweiterungen von Dateidialoge eingestellt.

Sie können jedoch einen Delegierten für das FileOk Ereignis auf dem Dialog implementieren. Dieses Ereignis wird ausgelöst, kurz bevor die Datei ausgewählt der Benutzer akzeptiert werden, und die Ereignisargumente bieten eine Cancel Eigenschaft, die Sie festlegen können, die Auswahl zu verbieten.

Es ist nicht so elegant wie eigentlich die falschen Dateien unsichtbar zu machen, aber es erlaubt Ihnen die Auswahl der falschen Art von Datei zu verbieten.

PS:. Vergessen Sie nicht, die Nutzer-Feedback zu geben, warum die Datei nicht akzeptiert wurde, sonst können sie sich fragen, warum der Dialog geschlossen wird, nicht, wenn sie eine txt-Datei auswählen

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