Brauche Hilfe bei Text Speicher

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von lordknoblauch.

    Brauche Hilfe bei Text Speicher

    Hallo,
    Ich bin ein neuling in VB und habe fast keine ahnung von VB.
    Ich habe mir etwas gebaut indem ich in einem Fenster eine sache eingebe und im anderen als Label angezeigt wird.
    nur wenn ich dann das Prog beende dann steht da wieder nichts ich will das aber dort gespeichert haben...
    Brauche Hilfe

    EDIT: mein Code sieht so aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TextBox1.Text = "" Then
    3. MsgBox("Du musst alles ausfüllen", MsgBoxStyle.Critical, "Error!")
    4. Else
    5. Form1.Label6.Text = TextBox1.Text
    6. Form1.Label7.Text = TextBox2.Text
    7. Form1.Label8.Text = TextBox3.Text
    8. Form1.Label10.Text = TextBox4.Text
    9. Form1.Label11.Text = TextBox5.Text
    10. Form1.Label12.Text = TextBox6.Text
    11. Form1.Label23.Text = TextBox7.Text
    12. Form1.Label24.Text = TextBox8.Text
    13. Form1.Label25.Text = TextBox9.Text
    14. Form1.Label18.Text = TextBox12.Text
    15. Form1.Label17.Text = TextBox11.Text
    16. Form1.Label16.Text = TextBox10.Text
    17. Form1.Label32.Text = TextBox15.Text
    18. Form1.Label31.Text = TextBox14.Text
    19. Form1.Label30.Text = TextBox13.Text
    20. Form1.Label39.Text = TextBox18.Text
    21. Form1.Label38.Text = TextBox17.Text
    22. Form1.Label37.Text = TextBox16.Text
    23. Form1.Label74.Text = TextBox21.Text
    24. Form1.Label73.Text = TextBox20.Text
    25. Form1.Label72.Text = TextBox19.Text
    26. Form1.Label67.Text = TextBox24.Text
    27. Form1.Label66.Text = TextBox23.Text
    28. Form1.Label65.Text = TextBox22.Text
    29. Form1.Label61.Text = TextBox27.Text
    30. Form1.Label60.Text = TextBox26.Text
    31. Form1.Label59.Text = TextBox25.Text
    32. Form1.Label54.Text = TextBox30.Text
    33. Form1.Label53.Text = TextBox29.Text
    34. Form1.Label52.Text = TextBox28.Text
    35. Form1.Label46.Text = TextBox33.Text
    36. Form1.Label45.Text = TextBox32.Text
    37. Form1.Label44.Text = TextBox31.Text
    38. MsgBox("Deine Informationen werden eingetragen", MsgBoxStyle.Information, "Information Eingetragen")
    39. Close()
    40. End If
    41. End Sub
    42. End Class
    Du könntest die Texte in den Programminternen Einstellungen speichern. Du findest sie in den Projekteigenschaften unter Einstellungen. Dort kannst du Variablen anlegen. Auf die Variablen zugreifen kannst du über My.Settings.Variablenname. Alternative wäre, die Daten in eine Datei zu speichern.

    Gruß
    ich nehme an, dass du die textboxen speichern willst

    da würd ich die werte erstmal zwischenspeichern und dann über eine schleife in die datei schreiben

    VB.NET-Quellcode

    1. Dim sw As New IO.StreamWriter("datei.txt") 'erstellt einen neuen streamwriter
    2. For Each t As Control In Me.Controls 'geht alle controls auf der form durch
    3. If TypeOf t Is TextBox Then 'prüft, ob die aktuelle control eine textbox ist
    4. sw.WriteLine(t.Text) 'schreibt den text der aktuellen textbox in die datei
    5. End If
    6. Next
    7. sw.Close() 'schließt den streamwriter wieder


    der geht dann einfach alle controls durch. wenn du noch eine oder mehrere andere textboxen auf der form hast, werden diese mitgespeichert.

    PS: überleg dir mal controls dynamisch zu erstellen, das is ja grausam ^^

    z.b.

    VB.NET-Quellcode

    1. Dim lbl(50) As Label 'deklariert ein label-array von 51 items
    2. For i = 0 To 50 'zählt von 0 bis 50 durch
    3. lbl(i) = New Label 'erstellt das label
    4. With lbl(i)
    5. .Text = "hallo" 'übergibt dem label mit index i den text
    6. .Location = New Point(12, 12) 'und die position
    7. End With
    8. Me.Controls.Add(lbl(i)) 'fügt das label auf der form hinzu
    9. Next


    die location musst du dann über eine routine anpassen, damit's ordentlich sortiert wird
    kannst du direkt übernehmen. mach dir einfach einen zweiten button und in dessen .click event fügst du den code ein. dann speichert der den inhalt aller textboxen in "datei.txt".

    und wenn du die datei direkt anzeigen lassen willst, um zu sehen ob auch alles korrekt gespeichert wurde, fügst du diese zeile noch ein

    VB.NET-Quellcode

    1. Process.Start("notepad", Application.StartupPath & "\datei.txt")

    das öffnet direkt den editor und lädt die datei rein
    wenn das in die labels wieder geladen werden soll, solltest du das vllt. lieber über dynamische labels machen. da wär das handling wesentlich einfacher.

    prinzipiell läuft das dann mit dem IO.StreamReader

    VB.NET-Quellcode

    1. Dim sr As New IO.StreamReader("datei.txt")
    2. While Not sr.EndOfStream
    3. sr.ReadLine()
    4. End While


    PS: das ist nur ein beispiel. musst du dann irgendwie tüfteln, wie das deinen labels zuweisen willst.
    okey...
    wie gesagt ich habe überhaubt keine ahnung von vb..
    ich hab jetzt mal 2 Bilder gemacht von meinen Forms.
    vielleicht wisst ihr dann was ich bauen will.

    Beim ersten Bild sind die Labels...
    auf dem 2. die Textboxen...
    und nun will ich dass wenn ich in die textboxen was schreibe dass es dann in den Labels auf taucht und dort gespeichert bleibt bis sich etwas ändert..

    EDIT:
    bilder-hochladen.net/files/7ahd-2s-jpg.html
    bilder-hochladen.net/files/7ahd-2t-jpg.html
    so wie's aussieht, kannst du einfach über eine schleife alle controls der form durchgehen und schritt für schritt die werte aus der textdatei auslesen/zuweisen

    VB.NET-Quellcode

    1. Dim sr As New IO.StreamReader("datei.txt")
    2. For Each c As Control In Me.Controls
    3. If TypeOf c Is Label Then
    4. c.Text = sr.ReadLine
    5. End If
    6. Next
    7. sr.Close()


    und quasi genauso kannst du die datei anlegen

    VB.NET-Quellcode

    1. Dim sw As New IO.StreamWriter("datei.txt")
    2. For Each c As Control In Me.Controls
    3. If TypeOf c Is Label Then
    4. sw.WriteLine(c.Text)
    5. End If
    6. Next
    7. sw.Close()


    sollte eigentlich problemlos funktionieren
    Hmmm...
    ich hab das ganze jetzt in den Button gesetzt...
    das sieht jetzt so aus:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim sr As New IO.StreamReader("datei.txt")
    4. For Each c As Control In Me.Controls
    5. If TypeOf c Is Label Then
    6. c.Text = sr.ReadLine
    7. End If
    8. Next
    9. sr.Close()
    10. If TextBox1.Text = "" Then
    11. MsgBox("Fülle alles aus oder schreibe - dort hin ", MsgBoxStyle.Critical, "Error!")
    12. Else
    13. Dim sw As New IO.StreamWriter("datei.txt")
    14. For Each c As Control In Me.Controls
    15. If TypeOf c Is Label Then
    16. sw.WriteLine(c.Text)
    17. End If
    18. Next
    19. sw.Close()
    20. MsgBox("Deine Informationen werden eingetragen", MsgBoxStyle.Information, "Information Eingetragen")
    21. Close()
    22. End If
    23. End Sub
    24. End Class


    aber iwie will er das trotzdem nicht
    1.
    iwie will er das trotzdem nicht
    ist keine aussage. wenn dir jemand helfen soll, muss derjenige schon wissen, was nicht will.

    2. das kann so garnicht funktionieren, weil du beide klamotten in die gleich sub gepackt hast. dein programm wird damit erst versuchen die sachen aus der datei zu lesen (sofern überhaupt vorhanden) und dann die gleichen sachen, die er eben eingelesen hat, wieder in die datei schreiben. hast also nix gewonnen damit.
    1. Okey also der soll ja von der einen Form aus den Textboxen in die Labels in der anderen Form schreiben und dass denn noch in eine Datei speichern die er beim starten auslesen kann und dass dann wieder in den Labels anzeigen lassen
    2. Hättest du einen Vorschlag wie ich das ändern könnte?

    achja und danke für deine Hilfe und Interesse :)
    du könntest erstmal prüfen, ob die datei vorhanden ist. wenn ja, über den streamreader einlesen und zuweisen wie gehabt.

    und die sachen mit dem streamwriter musst du einem button zuweisen oder einem menü, sodass es nur aufgerufen wird, wenn es wirklich verlangt wird.