vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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
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?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TreeView - nur Ordner anzeigen1.125Dikn18.01.19 12:57
Re: TreeView - nur Ordner anzeigen636HenryV18.01.19 16:12
Re: TreeView - nur Ordner anzeigen589Dikn19.01.19 11:52
Re: TreeView - nur Ordner anzeigen568Dikn22.01.19 12:53

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