Frage

In einer C# .NET 3.5-App (eine Mischung aus WinForms und WPF) möchte ich dem Benutzer erlauben, einen Ordner auszuwählen, aus dem er eine Menge Daten importieren möchte.Im Moment ist es in Gebrauch System.Windows.Forms.FolderBrowserDialog aber das ist ein bisschen lahm.Hauptsächlich, weil Sie den Pfad nicht eingeben können (Sie müssen also ein Netzlaufwerk zuordnen, anstatt einen UNC-Pfad einzugeben).

Ich hätte gerne etwas Ähnlicheres System.Windows.Forms.OpenFileDialog, aber für Ordner statt Dateien.

Was kann ich stattdessen verwenden?Eine WinForms- oder WPF-Lösung ist in Ordnung, aber ich würde es vorziehen, PInvoke nicht in die Windows-API zu integrieren, wenn ich das vermeiden kann.

War es hilfreich?

Lösung

Erstelle es nicht selbst!Es wurde getan.Sie können verwenden FolderBrowserDialogEx -Ein wiederverwendbares Derivat des eingebauten OrdnerBrowserDialog.Hier können Sie einen Pfad eingeben, sogar einen UNC-Pfad.Sie können damit auch nach Computern oder Druckern suchen.Funktioniert genauso wie das integrierte FBD, aber ...besser.

Vollständiger Quellcode.Frei.MS-Public-Lizenz.

FolderBrowserDialogEx

Code zur Verwendung:

var dlg1 = new Ionic.Utils.FolderBrowserDialogEx();
dlg1.Description = "Select a folder to extract to:";
dlg1.ShowNewFolderButton = true;
dlg1.ShowEditBox = true;
//dlg1.NewStyle = false;
dlg1.SelectedPath = txtExtractDirectory.Text;
dlg1.ShowFullPathInEditBox = true;
dlg1.RootFolder = System.Environment.SpecialFolder.MyComputer;

// Show the FolderBrowserDialog.
DialogResult result = dlg1.ShowDialog();
if (result == DialogResult.OK)
{
    txtExtractDirectory.Text = dlg1.SelectedPath;
}

Andere Tipps

Leider gibt es außer FolderBrowserDialog keine weiteren Dialoge zur Ordnerauswahl.Sie müssen diesen Dialog selbst erstellen oder PInvoke verwenden.

Bisher basierend auf dem Mangel an Antworten auf meine identische Frage, würde ich annehmen, dass die Antwort darin besteht, Ihren eigenen Dialog von Grund auf neu zu erstellen.

Ich habe hier und da Dinge über die Unterklassifizierung der allgemeinen Dialoge von VB6 gesehen und denke, dass dies Teil der Lösung sein könnte, aber ich habe noch nie etwas darüber gesehen, wie man das ändert, was der Dialog seiner Meinung nach auswählt.Es wäre über .NET über PInvoke und einige andere Tricks möglich, aber ich habe noch keinen Code gesehen, der das macht.

ICH wissen Es ist möglich und nicht Vista-spezifisch, da Visual Studio dies seit VS 2003 tut.

Wir hoffen, dass jemand Ihre oder meine Antwort beantwortet!

Nach stundenlanger Suche nach einer ähnlichen Lösung habe ich sie gefunden diese Antwort von leetNightShade Zu eine funktionierende Lösung.

Ich glaube, dass es drei Dinge gibt, die diese Lösung viel besser machen als alle anderen.

  1. Es ist einfach zu bedienen. Sie müssen lediglich zwei Dateien (die ohnehin zu einer kombiniert werden können) in Ihr Projekt einbinden.
  2. Es wird auf den Standard zurückgegriffen FolderBrowserDialog bei Verwendung auf XP oder älteren Systemen.
  3. Der Autor erteilt die Erlaubnis, den Code für jeden Zweck zu verwenden, den Sie für angemessen halten.

    Es gibt keine Lizenz als solche, es steht Ihnen frei, mit dem Code zu machen, was Sie wollen.

Laden Sie den Code herunter Hier.

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