vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
TreeView - nur Ordner anzeigen 
Autor: Dikn
Datum: 18.01.19 12:57

Hallo,
wie kann ich in einem TreeView-Steuerelement nur die Ordner von einem vorgegebenem Laufwerk (z.B.: "C:\")
mit Image bzw. SelectedImage anzeigen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView - nur Ordner anzeigen 
Autor: HenryV
Datum: 18.01.19 16:12

Exemplarische Vorgehensweise: Erstellen einer Explorer-ähnlichen Schnittstelle mit dem ListView-Steuerelement und dem TreeView-Steuerelement im Designer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView - nur Ordner anzeigen 
Autor: Dikn
Datum: 19.01.19 11:52

Danke HenryV für Deine schnelle Antwort!
Die Darstellung der Ordner funktioniert bei mir mit folgendem vereinfachtem Code einwandfrei (vb2010):
Imports System.IO
 
Public Class Form1
 
  Public Class TreeNode
    Inherits System.Windows.Forms.TreeNode
    Public Path As String
  End Class
 
 
  Private Sub Button1_Click( sender As System.Object,  e As System.EventArgs) _
    Handles Button1.Click
    Dim tn As TreeNode
    tn = AddNode(Me.tvFolders.Nodes, "C:\", "C:\")
    AddNode(tn.Nodes, ".", ".")
    Call setSelection("C:\", tn)
  End Sub
 
  Private Function AddNode (ByVal nodeCollection As TreeNodeCollection, ByVal _
    Caption As String, ByVal path As String) As TreeNode
    Dim tn As New TreeNode()
    tn.Text = Caption
    tn.Path = path
    nodeCollection.Add(tn)
    Return tn
  End Function
 
  Private Sub setSelection (ByVal strPath As String, ByRef tn As TreeNode)
    Dim strParentDir As String = Path.GetDirectoryName(strPath)
    Dim i As Integer
 
    Me.tvFolders.CollapseAll()
    For i = 0 To Me.tvFolders.Nodes.Count - 1
      If DirectCast(Me.tvFolders.Nodes(i), TreeNode).Path.ToUpper().StartsWith( _
        strPath) Then
        tn = DirectCast(Me.tvFolders.Nodes(i), TreeNode)
        tn.Expand()
        tn.EnsureVisible()
        Me.tvFolders.SelectedNode = tn
        Return
      End If
    Next
  End Sub
 
  Private Sub tvFolders_BeforeExpand (sender As Object, e As _
    System.Windows.Forms.TreeViewCancelEventArgs) Handles tvFolders.BeforeExpand
    Dim tn As TreeNode = DirectCast(e.Node, TreeNode)
    If DirectCast(tn.Nodes(0), TreeNode).Path = "." Then Call CreateSubnodes(tn)
  End Sub
 
  Private Sub CreateSubnodes (ByVal node As TreeNode)
    node.Nodes.Clear()
    Dim d As New DirectoryInfo(node.Path)
    For Each di As DirectoryInfo In d.GetDirectories
      If di.Attributes = FileAttributes.Directory Then
        Dim tn As TreeNode = DirectCast(node, TreeNode)
        tn = AddNode(node.Nodes, Path.GetFileName(di.FullName), di.FullName)
        If Directory.GetDirectories(di.FullName).Length > 0 Then AddNode( _
          tn.Nodes, ".", ".")
        tn.ImageIndex = 8
        tn.SelectedImageIndex = 9
      End If
    Next
  End Sub
 
  Private Sub tvFolders_DrawNode (sender As Object, e As DrawTreeNodeEventArgs) _
    Handles tvFolders.DrawNode
    If Not e.Node.TreeView.Focused AndAlso e.Node.Equals( _
    e.Node.TreeView.SelectedNode) Then
      Dim treeFont As Font = If(e.Node.NodeFont, e.Node.TreeView.Font)
      e.Graphics.FillRectangle(Brushes.Blue, e.Bounds)
      ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, _
        SystemColors.HighlightText, SystemColors.Highlight)
      TextRenderer.DrawText(e.Graphics, e.Node.Text, treeFont, e.Bounds, _
      SystemColors.HighlightText, TextFormatFlags.GlyphOverhangPadding)
    Else
      e.DrawDefault = True
    End If
  End Sub
aber: ich hätte gern die Darstellung ohne "C:" (also nur die Ordner in der ersten Spalte). wie mache ich das?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView - nur Ordner anzeigen 
Autor: Dikn
Datum: 22.01.19 12:53

So funktioniert's:


' ImageList1 Images: 0 (Symbol Ordner)
'                    1 (Symbol geöffneter Ordner)
 
' Treeview1 - ImageList = "ImageList1"
'           - ImageIndex = 0
'           - SelectedImageIndex = 1
 
Imports System.IO
 
Public Class Form4
  Dim strDrv As String = "C:\"
 
  Public Class TreeNode
    Inherits System.Windows.Forms.TreeNode
    Public Path As String
  End Class
 
  Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles _
    Me.Load
    Dim tn As TreeNode = Nothing
    Dim nodeinfo As IO.DirectoryInfo = New IO.DirectoryInfo(strDrv)
 
    For Each di As DirectoryInfo In nodeinfo.GetDirectories()
      If di.Attributes = FileAttributes.Directory Then
        tn = AddNode(TreeView1.Nodes, di.Name, strDrv & di.Name)
        If Directory.GetDirectories(di.FullName).Length > 0 Then AddNode( _
          tn.Nodes, ".", ".")
      End If
    Next
  End Sub
 
  Private Sub TreeView1_BeforeExpand (sender As Object, e As _
    System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand
    Dim tn As TreeNode = DirectCast(e.Node, TreeNode)
 
    If DirectCast(tn.Nodes(0), TreeNode).Path = "." Then Call CreateSubnodes(tn)
  End Sub
 
  Private Sub CreateSubnodes (ByVal node As TreeNode)
    Dim d As New DirectoryInfo(node.Path)
 
    node.Nodes.Clear()
 
    For Each di As DirectoryInfo In d.GetDirectories
      If di.Attributes = FileAttributes.Directory Then
        Dim tn As TreeNode = DirectCast(node, TreeNode)
        tn = AddNode(node.Nodes, Path.GetFileName(di.FullName), di.FullName)
        If Directory.GetDirectories(di.FullName).Length > 0 Then AddNode( _
          tn.Nodes, ".", ".")
        tn.ImageIndex = 0
        tn.SelectedImageIndex = 1
      End If
    Next
  End Sub
 
  Private Function AddNode (ByVal nodeCollection As TreeNodeCollection, ByVal _
    Caption As String, ByVal path As String) As TreeNode
    Dim tn As New TreeNode()
    tn.Text = Caption
    tn.Path = path
    nodeCollection.Add(tn)
    Return tn
  End Function
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel