Hm, ich hoffe ich verstehe dich richtig. Wenn Du z.B die Datei "C:\Programme\MeinProgramm\Del.EXE" brennen möchtest, willst Du dann auch den ganzen Pfad als Ordnerstruktur, sprich C:\Programme\MeinProgramm abbilden? Wenn ja, könntest Du es als Beispiel so realisieren:
Füger dem Formular 2 Buttons und ein Treeview hinzu. Gib dem Treeview den Namen "trvDir"
Imports System.IO
Public Class Form1
Private m_Depth As Int32 = 0 'Verzeichnistiefe
Private m_Counter As Int32 = 0 'Aktuelle Verzeichnistiefe, in welche man
' sich gerade befindet
Private files As New Generic.List(Of FileInfo)
Private m() As String
' ---> Senario: 3 Dateien aus unterschiedlichen Verzeichnissen sollen mit
' deren Ordnerstruktur
' im Treeview abgebildet werden
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
files.Add(New IO.FileInfo("C:\Programme\MyProgramm\Del.Log"))
files.Add(New IO.FileInfo( _
"C:\Programme\Office\Templates\Year\Counter\Result.xls"))
files.Add(New IO.FileInfo( _
"C:\WINDOWS\system32\SoftwareDistribution\Setup\ServiceStartup\wups.dll\" & _
".8.0.2469\wups.dll"))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button2.Click
For Each f As FileInfo In files
m_Counter = 0
'Verzeichnistiefe ermitteln
m = Split(f.DirectoryName, "\")
m_Depth = m.Length - 1
'---> Der erste Teil in m()ist die Root!
'Existiert bereits das Laufwerk im Treeview?
Dim tn As TreeNode = trvDir.Nodes(m(0)) 'Knoten über "Key" ermitteln
If IsNothing(tn) Then 'Root anlegen
tn = trvDir.Nodes.Add(m(0), m(0)) '"Key",Text
End If
m_Counter += 1 'Verzeichnistiefe festhalten
Call ReadRekursivPathInTreeview(tn)
Next
End Sub
Private Sub ReadRekursivPathInTreeview(ByVal tn As TreeNode)
If m_Counter > m_Depth Then Exit Sub
Dim xn As TreeNode
'Feststellen, ob der nächste Ordner sich bereits schon im Treeview
' befindet
For Each vn As TreeNode In tn.Nodes
If vn.Text = m(m_Counter) Then
xn = vn
Exit For
End If
Next
If IsNothing(xn) Then 'Treenode existiert noch nicht
xn = tn.Nodes.Add(m(m_Counter))
End If
m_Counter += 1 'Verzeichnistiefe festhalten
'Rekurisver Aufruf
Call ReadRekursivPathInTreeview(xn)
End Sub
End Class Du mußt die Verzeichnisse halt rekursiv durchgehen
Übrigens darf die Root natürlich nicht z.B C:\ heißen. Könnte sonst Schwierigkeiten geben Die Root wird im Treeview sowieso über die Eigenschaft "Key" des Treenodes identifiziert.
Gruß
Lars
Visual Basic Express 2010, C# Express 2010
Intel? i7 Core 920@2.63 Ghz, 6 GByte DDR3, 1024 MB ATI? Radeon? 5870, Windows 7 Prof. 64 Bit
Gibson SG 61' Reissue ; Ibanez Prestige RG 2550 E, Marshall Valvestate VS100 + Modell Vs412 (4 x 12''), Cubase Studio |