2010-03-10 2 views
29

Mit C# und WinForms in VS2008 möchte ich ein Datei-Browser-Steuerelement erstellen, das aussieht und sich wie das linke Fenster in Windows Explorer verhält. Zu meinem Erstaunen wird ein solches Steuerelement standardmäßig nicht mit .NET ausgeliefert.Wie erstellt man ein Explorer-ähnliches Ordner-Browser-Steuerelement?

Idealerweise möchte ich, dass der Inhalt genau dem Explorer entspricht. Unter Windows 7 sollten beispielsweise die Pseudoordner "Favoriten" und "Bibliotheken" angezeigt werden. Natürlich möchte ich nicht für jede Version von Windows spezifisch programmieren, wenn ich es helfen kann.

Ich habe herumgesucht, und es gibt einige Beispiele für solche Kontrollen, aber sie sind alle handgerollt und daher nicht 100% identisch mit dem im Explorer arbeiten.

Gibt es eine Möglichkeit, die Explorer-Steuerelement einfach wiederverwenden? Oder, wenn nicht, um Zugang zu einem Baum der Gegenstände zu bekommen, die er zeigen würde?

+1

Ich vermute, das Explorer-Steuerelement verwendet nur ein Baum-Steuerelement und füllt es innerhalb des Dialogcodes. Ich denke nicht, dass es ein bestimmtes Steuerelement sein würde, das die Ordner anzeigt. Ich könnte falsch liegen. – Lazarus

+0

Suchen Sie nach 'FolderBrowserDialog'? ref: http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx – shahkalpesh

+1

@shahkalpesh: Nein, im Wesentlichen bin ich auf der Suche nach der Kontrolle * in diesem Dialog. – Thomas

Antwort

28

Microsoft bietet a walkthrough for creating a Windows Explorer style interface in C#.

Es gibt auch einige Beispiele auf Code Project und anderen Seiten. Unmittelbare Beispiele sind Explorer Tree, My Explorer, File Browser und Advanced File Explorer aber es gibt andere. Explorer Tree scheint von dem kurzen Blick, den ich gemacht habe, am besten auszusehen.

Ich habe den Suchbegriff windows explorer tree view C# in Google verwendet, um diese Links zu finden.

+2

Wieder erfinden diese das Rad neu und sind in verschiedenen Fällen gezwungen, es falsch zu machen. Aber ich akzeptiere das, weil Sie die meisten nützlichen Links zur Verfügung gestellt haben. – Thomas

+8

@Thomas: Es denkt, das Rad neu zu erfinden ist die einzige Option, die Sie haben, da Windows diese Steuerung für die Verwendung außerhalb von Explorer nicht verfügbar macht. –

1

Es ist nicht so einfach wie es scheint, ein solches Steuerelement zu implementieren. Explorer arbeitet mit Shell-Elementen, nicht mit Dateisystemelementen (z. B. Systemsteuerung, Druckerordner usw.). Wenn Sie es implementieren müssen, schlage ich vor, einen Blick auf die Windows-Shell-Funktionen unter http://msdn.microsoft.com/en-us/library/bb776426(VS.85).aspx zu werfen.

+2

"Es ist nicht so einfach, wie es scheint, eine Kontrolle so zu implementieren." Ich realisiere es. Genau deshalb würde ich es vorziehen, das Rad nicht neu zu erfinden. – Thomas

0

Werfen Sie einen Blick auf Shell MegaPack Kontrollsatz. Es bietet Windows Explorer wie Ordner/Datei-Browsing mit den meisten Funktionen und Funktionen wie Kontextmenüs, Umbenennen, Drag-Drop, Symbole, Overlay-Icons, Thumbnails, usw.

+2

Das war mir schon eingefallen. Wenn dies nicht meine erste kommerzielle Anwendung wäre, würde ich gerne die 299 $ zahlen, aber so wie es aussieht, kann ich mir das nicht leisten. – Thomas