Announcement

Collapse
No announcement yet.

Backup Programm

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Backup Programm

    Dieses Thema stammt von http://entwickler-forum.de/showthrea...676#post195676

    Ich möchte so ein art Bakup Programm schreiben.
    Ein TreeView in dem die Kompletten Laufwerk eines Computers abgebildet ist.
    Der TreeView hat vor jedem Knoten Checkboxen.
    Das der TreeView mit den Lauferksdaten gefüllt wird hab ich hinbekommen.

    [highlight=vb.net]
    Imports System.IO
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' abrufen der lokalen Laufwerksangaben
    Dim drives() As String = Directory.GetLogicalDrives()
    Dim node As TreeNode
    For Each drv As String In drives
    node = TreeView1.Nodes.Add(drv)
    If node.Text = "A:\" Then
    node.ImageIndex = 0
    node.SelectedImageIndex = 0
    Continue For
    End If
    ' alle untergeordneten Verzeichnisse einlesen
    AllSubDirectories(node)
    ' das Laufwerk C: aktivieren
    If (drv = "C:\") Then
    TreeView1.SelectedNode = node
    End If
    Next
    End Sub

    ' Hinzufügen der untergeordneten Verzeichnisse eines
    ' bestimmten Knotens
    Private Sub AllSubDirectories(ByVal node As TreeNode)
    Dim arrDirInfo() As DirectoryInfo
    Dim dirinfo As DirectoryInfo = _
    New DirectoryInfo(node.FullPath)
    ' auftretende Fehler ignorieren
    Try
    arrDirInfo = dirinfo.GetDirectories()
    Catch
    Return
    End Try
    For Each info As DirectoryInfo In arrDirInfo
    node.Nodes.Add(info.Name)
    Next
    End Sub
    Private Sub TreeView1_BeforeExpand(ByVal sender As Object, _
    ByVal e As TreeViewCancelEventArgs) _
    Handles TreeView1.BeforeExpand
    For Each node As TreeNode In e.Node.Nodes
    AllSubDirectories(node)
    Next
    End Sub
    Private Sub TreeView1_AfterSelect(ByVal sender As Object, _
    ByVal e As TreeViewEventArgs) _
    Handles TreeView1.AfterSelect
    If e.Node.Nodes.Count = 0 Then
    AllSubDirectories(e.Node)
    End If
    End Sub
    End Class
    [/highlight]
    Wenn es ne schönere und kürzere Art gibt, bin ich froh, wenn ihr mir die zeigen könnt.


    Nun möchte ich einen Button drücken und die ausgewählten Ordner sammt Unterordner auf ein bestimmtes Laufwerk kopieren. Ordner mit Unterordner kann ich kopieren nur ich krieg das auslesen des TreeView nicht hin.
    Ich hoffe ihr könnt mir da mit einem Code beispiel oder gleich die lösung helfen (ich kann es meistens erst richtig verstehen, wenn ich die lösung habe und die dann schritt für schritt durchgehe)

    Schon mal vielen dank im vorraus.
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

  • #2
    Hallo,

    zum Aufbauen der Knoten (Ordnerstruktur) könnte dich vielleicht dies interessieren: http://dotnet-snippets.de/dns/explorer-treeview-fuer-vbnet-SID468.aspx.
    Grundsätzlich ist es so wie du es machst korrekt.

    Um den/die markierten Ordner auszulesen muss jeder Knoten des TreeView geprüft werden. Es gibt leider keine eingebaute Eigenschaft die dies erledigt (in ASP.net schon ). D.h. per Schleife jeden Knoten durchlaufen (Rekursion).

    Alternativ könntest du dir das TreeView ableiten und diese Eigenschaft anbieten.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      soweit hat ich mir das auch schon gedacht mit jedem einzelnen knoten auslesen
      nur ich muss ja mehr oder weniger
      1. ist knoten aktiv oder nicht,
      wenn er aktiv ist muss ich ja den namen des Knotens haben, um auf den pfad zu kommen, oder gibts da ne einfachere lösung
      2. die anzahl der knoten ändert sich ja auch mal auf anderen systemen was mach ich da?? oder gibt es da i ein
      for 1 to **

      Comment


      • #4
        wäre eine möglichkeit oder du durchläufst alle Knoten in einer For Each Schleife ... wenn nötig auch rekursiv um untergeordnete Knoten zu erhalten.
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          1. ist knoten aktiv oder nicht,
          wenn er aktiv ist muss ich ja den namen des Knotens haben, um auf den pfad zu kommen, oder gibts da ne einfachere lösung
          Wenn die markierten (Checkbox) gesucht werden soll muss jeder Knoten geprüft werden.
          Soll nur der aktuell ausgewählte genommen werden gibt es die Eigenschaft SelectedNode-Eigenschaft des TreeView.


          2. die anzahl der knoten ändert sich ja auch mal auf anderen systemen was mach ich da?? oder gibt es da i ein
          for 1 to **
          Ja es gibt Schleifen
          Am einfachsten ist eine Lösung die das TreeView rekursiv durchsuchst.

          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment

          Working...
          X