Ich erstelle benutzerdefinierte Explorer mit Listview, und ich muss navigieren Schaltflächen für die Auflistung von Verzeichnissen, wie in Windows Explorer. Also, kurz gesagt Erklärung ich es brauche, wie dies funktioniert:Listview Explorer - Verzeichnisschaltflächen wie Windows Explorer navigieren?
Wenn Sie einen Doppelklick auf „Ordner“ in Listview, Sie Ebene gehen in diesem Verzeichnis nach unten (Ich habe diese Arbeit)
Wenn Wenn Sie dies tun, sollte die Schaltfläche für die Rückwärtsnavigation aktiv werden und Sie können zur vorherigen Verzeichnisposition zurückkehren. Wenn zurückgegeben, sollte auch die Schaltfläche zum Hochgehen aktiv sein - um in das Verzeichnis zurückzukehren, in dem Sie waren, als Sie auf "Ordner" doppelgeklickt haben.
Ich möchte, dass dies für so viele Up/Down-Ordnerpfade funktioniert wie Benutzerklicks - so funktioniert Windows Explorer.
Ich habe versucht, durch für Pfade öffentliche Variable deklarieren (die von ListViewItem-Tags gespeichert werden), aber man kann nur einmal nach oben/unten in Verzeichnisse bewegen. Ich möchte, dass es so oft funktioniert, wie der Benutzer navigieren kann, wenn es natürlich Verzeichnisse in Verzeichnissen gibt.
Dies ist mein letzter Versuch (mit Liste der Strings):
Dim Navigation as List(of String)
Private Sub ListView1_DoubleClick(sender As Object, e As EventArgs) Handles ListView1.DoubleClick
If ListView1.SelectedItems(0).ImageKey = "folder" Then
Dim ItemDirectory As IO.DirectoryInfo
ItemDirectory = New IO.DirectoryInfo(ListView1.SelectedItems(0).Tag.ToString)
'Pass this path to List of strings too
Navigation = ItemDirectory
'... I'm adding each subdirectories and files in Listview here
Else '... If not folder then just open file by double-clicking
Process.Start(ListView1.SelectedItems(0).Tag)
End If
BtnNavigateBackwards.Enabled=True 'Enable navigating backwards
End Sub
Private Sub BtnNavigateForward_Click(sender As Object, e As EventArgs) Handles BtnNavigateForward.Click
If Navigation.Count <> 0 Then
'Get directory that is one level down from where you are in Listview - I was allready in It by clicking on "folder" item
Dim ItemDirectory As IO.DirectoryInfo
ItemDirectory = New IO.DirectoryInfo(Navigation. ???? go to path 1 level down each click until last list of string ???)
'... Adding each subdirectories and files for directory one level down
'... Also checking for "folder" item in directory - If they are not then disable this button
End If
End Sub
Private Sub BtnNavigateBackwards_Click(sender As Object, e As EventArgs) Handles BtnNavigateBackwards.Click
'Get directory one level up from where I am in Listview
Dim ItemDirectory As IO.DirectoryInfo
ItemDirectory = New IO.DirectoryInfo(IO.Path.GetDirectoryName(Navigation. ?????? how to go only 1 level up each click ???))
'... Adding each subdirectory and files to Listview
End Sub
Das ist nicht mein kompletter Code, da es sehr lang ist, und ich weiß, es fehlen viele Dinge. Aber die wichtigste Frage ist - kann ich mich sogar mit der Liste der Saiten so nach oben/unten bewegen?
je nach Ansicht, explorer ist mehr wie ein Treeview, die die Ordnerstruktur und ein Listenansicht zeigt, die zeigen den Inhalt des ausgewählten Ordners – Plutonix
@Plutonix, sicher, das ist richtig. Mein Design ist so: Sie klicken auf einen Treeview-Knoten, der das Tag des Verzeichnisses enthält, und dann wird Listview aufgefüllt. Von dort arbeite ich nur mit Listview und alle Artikel haben ihre Tags. Navigationstasten sind nur für Listview, ich versuche Windows Explorer Look zu erstellen. By the way, habe ich es zu arbeiten 1. Ebene zu navigieren rückwärts, jetzt nur noch die navigate vorwärts Code fehlt mir - was ich denke, ist härter, es hat zu „merken“ und bieten in Klick Schritten alle Ordner-Tags, die ich allready war im. – LuckyLuke82