Vb.net Explorer

Liebe/-r Experte/-in,

Huhu,

ich bringe mir gerade selbst visual basic bei und möchte einen Explorer, der dem Windows-Explorer ähnelt Programmieren! Mein Problem ist nun, dass ich nicht weiß, wie ich im Listview programmiere, dass ich dort einen Ordner öffnen kann, der dann im Listview angezeigt wird! Wäre cool, wenn Sie mir die Prozedur Schritt für Schritt erläutern könnten!

Liebe Grüße
Ben

Hi,

sorry, da muss ich passen, meine VB Zeiten sind schon zu lang her. Ich aktualisiere mal gerade mein Profil und wünsche noch hilfreiche Antworten von anderen Leuten.

Gruß
Murat

Hallo Ben,

es tut mir leid, aber mit Visual Basic kenne ich mich nicht (mehr) aus. Ich hab’s vor Jahren mal gelernt und auch einiges programmiert, aber mir kam es nicht so vor, dass es wirklich eine Programmiersprache ist. Inzwischen wurde Visual Basic ja auch weiter entwickelt, so dass ich nicht mehr damit zurecht komme.
Ich hoffe, Sie finden jemand anderen, der Ihnen weiter helfen kann.

Viele Grüße
Rolf Fabricius

Hallo Ben

Mein Code:
Public Class Form2

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

Dim i As ObjectModel.ReadOnlyCollection(Of String) = My.Computer.FileSystem.GetFiles(e.Node.FullPath)
-> gibt den vollständigen Pfad aller Dateien an

For Each k As String In i

Dim f As IO.FileInfo = My.Computer.FileSystem.GetFileInfo(k)
->Infos über das aktuelle file
Dim item As New ListViewItem(f.Name)
->Ein neues Item für das listview

ListView1.Items.Add(item)
->und hier wird es hinzugefügt
Next
End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim drive As ObjectModel.ReadOnlyCollection(Of IO.DriveInfo) = My.Computer.FileSystem.Drives
->Eine Liste von allen Laufwerken

For Each k As IO.DriveInfo In drive

Dim knoten As New TreeNode(k.RootDirectory.FullName)
->ein neuer Knoten für den Treeview

knoten.Nodes.AddRange(unterknoten(k.RootDirectory.FullName))
->fügt alle Ordner der ersten Ebene nach dem Hauptordner ein (‚unterknoten‘)

TreeView1.Nodes.Add(knoten)
->und hier wird der Knoten hinzugefügt

Next
End Sub

Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand
->sollte ev. auch mit TreeView1.AfterExpand gehen

For Each k As TreeNode In e.Node.Nodes

k.Nodes.Clear() ->löscht alle unterknoten

k.Nodes.AddRange(unterknoten(k.FullPath))
->und fügt sie wieder aktualisiert ein

Next
End Sub

Private Function unterknoten(ByVal pfad As String) As TreeNode()
->die eigene Funktion, um unterknoten hinzuzufügen

Dim hah(-1) As TreeNode
->Das Array, das zurückgegeben wird
Try
->ein Try ist wichtig, denn hier können Exceptions ausgelöst werden

Dim ordner As ObjectModel.ReadOnlyCollection(Of String) = My.Computer.FileSystem.GetDirectories(pfad)
->eine liste aller untergeordneten Ordner

Dim knoten As New TreeNode
For Each f As String In ordner
Array.Resize(hah, hah.Length + 1)
->für einen neuen Knoten brauchts ein neues Element
knoten = New TreeNode (My.Computer.FileSystem.GetDirectoryInfo(f).Name
)
->einfachheitshalber habe ich einen extraknoten definiert, dieser wird zu hah hinzugefügt
hah(hah.Length - 1) = knoten
->und zwar hier
Next
Return hah
Catch
Return hah
End Try
-> dann wird hah zurückgegeben
End Function
End Class

Es gibt allerdings keine Bilder und es ist schwer, diese von dem Explorer zu nehmen. Der Windows Explorer beinhaltet sehr viele informationen

Gruss Beat