Hallo an alle,
ich habe in einem Projekt eine Klasse "TreeView" mit folgendem Quellcode (siehe unten) erstellt. Innerhalb der Klasse wird das Tree-View-Objekt erstellt und anhand eines Dateipfades befüllt. Nun möchte ich für jede Ebene des TreeView mithilfe einer ImageList ein bestimmtes Icon anzeigen lassen. Meine Überlegung war hierbei anhand des jeweiligen Tag der verschiedenen Ebenen ein bestimmtes Icon zu zuweisen.
Beispiel:
If e.Node.Tag = 1 Then
Me.ImageIndex = 0
Me.SelectedImageIndex = 0
End If
Leider funktioniert dies nicht gewollt
Hat jemand von euch eine Idee wie man so etwas realisieren könnte?
Vielen Dank schonmal im Voraus.
Hier die Klasse "TreeView" zum besseren Verständnis.
Imports System.IO
Public Class TreeView
Inherits System.Windows.Forms.TreeView
Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
Private components As System.ComponentModel.IContainer
Public Sub New()
Me.Sort()
Me.HotTracking = True
Me.HideSelection = False
End Sub
Public Sub ShowTree(ByVal Path As String)
Me.Nodes.Clear()
Dim nNode As New TreeNode(Path)
nNode.Tag = 1
Me.Nodes.Add(nNode)
Me.FillTreeNode(nNode)
Me.Nodes.Item(0).Expand()
End Sub
Public Sub FillTreeNode(ByVal dNode As TreeNode)
Try
Dim d As New DirectoryInfo(dNode.FullPath)
For Each di As DirectoryInfo In d.GetDirectories
Dim nNode As New TreeNode(di.Name)
dNode.Nodes.Add(nNode)
nNode.Tag = Convert.ToInt32(dNode.Tag) + 1
nNode.Nodes.Add("")
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Protected Overrides Sub OnBeforeExpand(ByVal e As System.Windows.Forms.TreeViewCancelEventArgs)
Dim n As TreeNode = CType(e.Node, TreeNode)
If n.Nodes(0).Text = "" Then
Me.BeginUpdate()
n.Nodes.Clear()
Me.FillTreeNode(n)
Me.EndUpdate()
End If
MyBase.OnBeforeExpand(e)
End Sub
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(TreeView))
Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
Me.SuspendLayout()
'
'ImageList1
'
Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), System.Windows.Forms.ImageListStreamer)
Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
Me.ImageList1.Images.SetKeyName(0, "oem.png")
Me.ImageList1.Images.SetKeyName(1, "car.png")
Me.ImageList1.Images.SetKeyName(2, "project.png")
Me.ImageList1.Images.SetKeyName(3, "folder.ico")
'
'TreeView
'
Me.LineColor = System.Drawing.Color.Black
Me.ResumeLayout(False)
End Sub
End Class