Checklistbox was mach ich falsch xD?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Checklistbox was mach ich falsch xD?

    Ich möchte das Datein die Checked sind gemoved werden aber irgendwas mach ich falsch

    Code:

    VB.NET-Quellcode

    1. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    2. For Each Datei As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods", FileIO.SearchOption.SearchTopLevelOnly, "*.zip")
    3. CheckedListBox1.Items.Add(Datei)
    4. Next
    5. End Sub
    6. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    7. Dim Datei = CheckedListBox1.CheckedItems
    8. For Each Dateis In My.Computer.FileSystem.GetFiles(CheckedListBox1.CheckedItems.ToString)
    9. System.IO.File.Move(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods", My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\Deaktivierte mods")
    10. Next
    11. End Sub


    Freue mich über eure hilfe :) Danke im vorraus

    @xX-Nick-Xx Du läufst eine total falsche Schleife ab.
    Die Schleife muss über die CheckedItems gehen:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. For Each item In Me.CheckedListBox1.CheckedItems
    3. MessageBox.Show(item.ToString)
    4. Next
    5. End Sub
    ====================
    Und wenn Du dann noch den ollen VisualBasic-Namespace rausschmeißt, kann das ganze richtig schnuckelig werden:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim fis() = New IO.DirectoryInfo("c:\Temp").GetFiles("*.*")
    4. For Each fi In fis
    5. Me.CheckedListBox1.Items.Add(fi)
    6. Next
    7. End Sub
    8. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    9. For Each item In Me.CheckedListBox1.CheckedItems
    10. Dim fi = CType(item, IO.FileInfo)
    11. fi.MoveTo("c:\Temp\xxxx.yyy")
    12. Next
    13. End Sub
    14. End Class


    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!

    xX-Nick-Xx schrieb:

    die zips auflisten
    Das ZIP musst Du separat auslesen und die Daten in einer List(Of String) bereitstellen.
    Über das Checked Item hast Du den Namen und mit dem kannst Du in die ZIP reingehen und die Datei extrahieren.
    Klar, das geht nicht über FileInfo.
    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!
    Jetzt kommt folgende meldung:

    VB.NET-Quellcode

    1. ​Ein Ausnahmefehler des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    2. Zusätzliche Informationen: Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.

    Die datei ist aber nicht im Ordner?!

    xX-Nick-Xx schrieb:

    Die datei ist aber nicht im Ordner
    Weiß ich nicht.
    Kopier die mal testweise in ein leeres Unterverzeichnis im Temp-Ordner, da hast Du einen guten Überblick.
    Kann es sein, dass die Datei zwei Mal extrahiert wird? Dann wäre sie beim zweiten Mal schon da.
    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!
    ich hab das ganze jetzt schön gelöst

    VB.NET-Quellcode

    1. For Each item In CheckedListBox1.CheckedItems
    2. Dim Pfad As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods\" & item.ToString
    3. If System.IO.File.Exists(Pfad) Then 'Pfad = Kompeltter Pfad mit Dateinamen + ENdung
    4. Dim fi As FileInfo = New FileInfo(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods\" + item.ToString)
    5. fi.MoveTo(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods\" + item.ToString)
    6. Else
    7. End If
    8. Next

    jetzt bräuchte ich nur noch ne methode für die Unchecked?! aber find da nix nützliches

    @xX-Nick-Xx Ich lese Deinen Code folgendermaßen:

    VB.NET-Quellcode

    1. For Each item In CheckedListBox1.CheckedItems
    2. Dim Pfad As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\My Games\FarmingSimulator2017\mods\" & item.ToString
    3. If System.IO.File.Exists(Pfad) Then 'Pfad = Kompeltter Pfad mit Dateinamen + ENdung
    4. Dim fi As FileInfo = New FileInfo(Pfad)
    5. fi.MoveTo(Pfad)
    6. Else
    7. ' was soll hier passieren?
    8. End If
    9. Next
    Wenn Du die Items einzeln durchklingelst, kannst Du alles mögliche abfragen:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. For i = 0 To Me.CheckedListBox1.Items.Count - 1
    3. If Me.CheckedListBox1.GetItemCheckState(i) = CheckState.Unchecked Then
    4. MessageBox.Show(Me.CheckedListBox1.Items(i).ToString)
    5. End If
    6. Next
    7. End Sub
    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!