Geladene Dateien speichern

  • VB.NET

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von GameGamer.

    Geladene Dateien speichern

    Hallo,

    ich habe folgendes Anliegen und suche nach Umsetzungsmöglichkeiten.
    Ich lade Dateien von irgendeinem Ort meiner Festplatte mit dem OpenFileDialog in eine Listbox. Alle geladene Dateien sollen aber auch noch in einen anderen Ordner kopiert werden. Wie kann ich das umsetzen?

    Gruß
    Ich hab dir ein kleines Beispiel dafür gemacht, musst du vieleicht etwas anpassen.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private fileList As New List(Of FileInfo)
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. Using ofd As New OpenFileDialog
    6. ofd.Multiselect = True
    7. If ofd.ShowDialog <> Windows.Forms.DialogResult.OK Then
    8. Return
    9. End If
    10. For Each _file In ofd.FileNames
    11. fileList.Add(New FileInfo(_file))
    12. Next
    13. End Using
    14. End Sub
    15. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    16. If fileList.Count <> 0 Then
    17. Using fbd As New FolderBrowserDialog
    18. If fbd.ShowDialog <> Windows.Forms.DialogResult.OK Then
    19. Return
    20. End If
    21. For Each _file In fileList
    22. File.Copy(_file.FullName, Path.Combine(fbd.SelectedPath, _file.Name))
    23. Next
    24. End Using
    25. Else
    26. MessageBox.Show("Nix geladen, nix zu kopieren!")
    27. End If
    28. End Sub
    29. End Class
    Es geht doch auch einfacher:

    VB.NET-Quellcode

    1. For each item in listbox1.items
    2. IO.file.Copy(item.toString, "Pfad wo's hinkopiert wird")
    3. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kilian_98“ ()

    GameGamer schrieb:

    in eine Listbox
    Habe ich Dich richtig verstanden?
    Der gesamte Dateiinhalt ist der Inhalt eines ListBox-Items?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Kilian_98: Nicht überall "ToString" anhängen. item ist bereits vom Typ String.
    Zudem bitte unbedingt auf Rechtschreibung achten.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Kilian_98 schrieb:

    Dein eigenes Lieblingssprichwort: Option Strict On

    Hä? Was hat das mit "Option Strict On" zu tun? item ist ein String und somit ist alles gut, da braucht es kein "ToString()".
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Kann ich nicht nachvollziehen.
    trade-programming.de/pixelkram/gmczsyldij.png

    Die ListBoxItem-Klasse gibt es auch nur in WPF, das heißt irgendwas stimmt bei dir nicht.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Das ListBoxItem gibt es nur in WPF, wie gesagt.
    Kannst du mir den Fehler mal zeigen, denn ich bin da nen bisschen verwundert drüber.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ah k, nehmen tut er es deshalb eben trotzdem. Na ja ok, dann könnte man das ToString sogar anhängen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jau, Object geht nicht in String, okay, mein Fehler.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Dann hast du wohl keine Endung angegeben, wie soll .NET das auch sonst wissen?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Wenn du einen Ordner kopieren möchtest, der dann auch keine
    Datei ist, muss du den Code etwas umändern:

    VB.NET-Quellcode

    1. For each item in listbox1.items
    2. IO.directory.Copy(item.toString, "Pfad wo's hinkopiert wird")
    3. Next


    Musst halt schauen, ob die 'Datei' ein Ordner ist, da ist VB etwas pingelig

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kilian_98“ ()

    Hab da jetzt ein Beispiel gemacht wie das anständig funktioniert. Wobei ich auch darauf aufmerksam machen Möchte:

    [VB.NET] Keine Strings in die File-Listbox!

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private fileList As New List(Of FileInfo)
    4. Private BS As New BindingSource
    5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. BS.DataSource = fileList
    7. ListBox1.DataSource = BS
    8. ListBox1.DisplayMember = "Name"
    9. Using ofd As New OpenFileDialog
    10. ofd.Multiselect = True
    11. If ofd.ShowDialog <> Windows.Forms.DialogResult.OK Then
    12. Return
    13. End If
    14. For Each _file In ofd.FileNames
    15. BS.Add(New FileInfo(_file))
    16. Next
    17. End Using
    18. End Sub
    19. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    20. If BS.Count <> 0 Then
    21. Using fbd As New FolderBrowserDialog
    22. If fbd.ShowDialog <> Windows.Forms.DialogResult.OK Then
    23. Return
    24. End If
    25. Dim tmplist As New List(Of FileInfo)
    26. For Each _file As FileInfo In BS
    27. Dim newfile As String = Path.Combine(fbd.SelectedPath, _file.Name)
    28. If File.Exists(newfile) Then
    29. If MessageBox.Show("Datei existiert bereits, soll sie überschrieben werden?", "Warnung", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    30. File.Copy(_file.FullName, newfile, True)
    31. tmplist.Add(_file)
    32. End If
    33. Else
    34. File.Copy(_file.FullName, newfile)
    35. tmplist.Add(_file)
    36. End If
    37. Next
    38. For Each tmp As FileInfo In tmplist
    39. BS.Remove(tmp)
    40. Next
    41. End Using
    42. Else
    43. MessageBox.Show("Nix geladen, nix zu kopieren!")
    44. End If
    45. End Sub
    46. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Derfuhr“ ()