VB.NET - Brauche Hilfe! ListBox Einträge Speichern

01/31/2014 15:43 iSam34#1
Problem
Ich möchte den gesamten Inhalt einer ListBox in eine .txt Datei speichern. Ich hab tausende Möglichkeiten getestet. Ich zeig euch einfach einen Ausschnitt vom Code :

Code:
 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim myStream As Stream

        SaveFileDialog1.Filter = "Common Textfile|*.txt"
        SaveFileDialog1.Title = "Save Code-List"
        SaveFileDialog1.FilterIndex = 1
        SaveFileDialog1.RestoreDirectory = True

        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
            myStream = SaveFileDialog1.OpenFile()

            Using sw As StreamWriter = New StreamWriter(myStream)
                sw.WriteLine()
                sw.Close()
            End Using
        End If
    End Sub
Ich hab nun leider keine Ahnung, was bei sw.WriteLine() in die Klammer kommt, damit er den Inhalt der ListBox speichert.

-Sam
01/31/2014 16:22 Weom#2
Code:
Imports System.IO
Imports System.Text

Module Module1

    Sub Main()
        Dim fileName As String = "test.txt"
        Dim textToAdd As String = "Example text in file"

        Using writer As StreamWriter = New StreamWriter(fileName)
           writer.WriteLine(textToAdd)
        End Using
    End Sub

End Module
Das Zeug, was du speichern möchtest, muss in die Klammer.
01/31/2014 16:27 iSam34#3
Ich will den gesamten Inhalt von ListBox1 in die Datei kopieren!
01/31/2014 16:30 th0rex#4
listbox1.Items sind alle Items in der listbox. Kannst mit foreach durchgehen und dann halt schreiben.
01/31/2014 16:41 iSam34#5
Quote:
Originally Posted by omitma View Post
listbox1.Items sind alle Items in der listbox. Kannst mit foreach durchgehen und dann halt schreiben.
Und wie? -__-
01/31/2014 16:50 th0rex#6
Code:
foreach (var item in listBox1.Items)
{
    MessageBox.Show(item.ToString());
}
Solltest aber schon sowas wie foreach kennen/benutzen können bevor du Programme schreibst. Dann musst du auch nicht wegen sowas einfachem hier fragen.

Edit : Sry, dass das c# ist. Grade erst gesehen, dass du in VB codest. Ist aber kein großer Unterschied.
01/31/2014 16:51 tolio#7
Quote:
Originally Posted by iSam34 View Post
Und wie? -__-
Quote:
Originally Posted by omitma View Post
Kannst mit foreach durchgehen und dann halt schreiben.
Wenn dir das nicht reicht, geh zurück auf Los, ziehe keine 4000€ ein und lerne das Programmierhandwerk.

Aber trotzdem noch zwei Hinweise.
Entweder in einer Schleife Zeile für Zeile durchgehen und den Inhalt immer mit einem Trennzeichen in die Datei schreiben und beim auslesen das Gegenteil machen.
Oder die ganze mit De/Serialisierung und nem BinaryFormatter machen.
01/31/2014 17:39 qkuh#8
Vergiss den letzten Satz von tolio. Zu schwer für einen Anfänger. Der Rest wurde schon gesagt.
02/06/2014 11:13 iSam34#9
Aktueller Code :

Code:
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim myStream As Stream

        SaveFileDialog1.Filter = "Common Textfile|*.txt"
        SaveFileDialog1.Title = "Save Code-List"
        SaveFileDialog1.FilterIndex = 1
        SaveFileDialog1.RestoreDirectory = True

        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
            myStream = SaveFileDialog1.OpenFile()

            Using sw As StreamWriter = New StreamWriter(myStream)
                For Each Item In ListBox1.Items.ToString
                    sw.WriteLine(Item.ToString())
                Next
                sw.Close()
            End Using
        End If
    End Sub
Output (Textdatei) :
Code:
S
y
s
t
e
m
.
W
i
n
d
o
w
s
.
F
o
r
m
s
.
L
i
s
t
B
o
x
+
O
b
j
e
c
t
C
o
l
l
e
c
t
i
o
n
Ok Habs. Musste nur diese ".ToString"s entfernen. Ich bin ein noob.