VB08 Text/Item in ListView speichern

06/26/2011 18:13 _Headsh0t_#1
Moin zusammen.
Nach langer langer Zeit hatte ich mal wieder Lust etwas mit Visual Basic zu programmieren.
Es sollte eine Art Accountverwalter werden.

Allerdings weiß ich gerade nicht, wie ich den Text (Items und Subitems) in der ListView1 speichern kann und, dass dieser beim nächsten Start wieder aufgerufen wird. Hoffe jemand kann mir ne Lösung sagen ;o


Zurzeit sieht das Programm so aus (Der Text unter "Name/Link Benutzername Passwort Email etc. soll gespeichert werden und beim nächsten Start des Programmes wieder geladen werden)
[Only registered and activated users can see links. Click Here To Register...]
06/26/2011 18:33 mrapc#2
nicht schwer:

Gehe mal in VB auf
Projekt => Eigenschaften

dorf auf:
EInstellungen

Da findest du
Setting

Bennen das in ListView um

danach

gehe auf die Form
und füge einen Speicher Button ein
oder wähle als API OnCLose

ist dir überlassen

Der Code ist jetzt (im Button)
My.Settings.ListView = Listview1.items

Ob es ListView1 ist weis ich ja nicht musst du sehen
dann mach Doppelklick auf die Form

in der API Zeile sollte OnLoad stehen
der Code hier ist
ListView1.Items = My.Settings.ListView

sollte ein Fehler kommen einfach wieder melden ;)
06/26/2011 19:23 _Headsh0t_#3
Ich hatte bereits das, funktionierte jedoch nicht.

Code:
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.ListView1.Text = My.Settings.Text1

    End Sub

    Private Sub SpeichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripMenuItem.Click
        My.Settings.Text1 = ListView1.Text
        My.Settings.Save()
        My.Settings.Reload()

    End Sub
Was ist dieses API OnClose was du meinst?


Listview1.items geht auch nicht

Fehlermeldung wegen dem "Items"
Quote:
Fehler 1 Der Wert vom Typ "System.Windows.Forms.ListView.ListViewItemCollect ion" kann nicht in "String" konvertiert werden.
06/26/2011 19:29 Kraizy​#4
Warum .Text? Wenn du es so machen willst wie mrapc sagte, musst du ListView auswählen, nicht String.
Rechts oben doppelklick auf "My Project" -> links in der Navigation auf "Einstellungen" -> Name: z.B. mySavedListView Typ: System.Windows.Forms.ListView (wenn es nicht vorhanden ist, dann auf "Durchsuchen..." -> System.Windows.Forms -> ListView). Dann um es zu speichern: My.Settings.mySavedListView = ListView1 oder zum Laden: ListView1 = My.Settings.mySavedListView.
06/26/2011 19:50 _Headsh0t_#5
Habs so gemacht wie du sagtest und beim debuggen kommt/öffnet sich Settings.Designer.vb und sagt das: "Das Konfigurationssystem konnte nicht initialisiert werden." und zeigt das in Gelb an Return CType(Me("mySavedListView"),Global.System.Windows. Forms.ListView)
06/26/2011 20:09 Kraizy​#6
Warum speicherst du es nicht in eine Textdatei oder Registry? Eine Zeile pro Account. Die Infos trennst du z.B. mit einem ";" würde dann so aussehen:
Link;Benutzername;Passwort;Email... (wenn es nicht nur für dich ist, dann das Passwort verschlüsseln).
Das ganze lässt sich ganz leicht mit einer Schleife und dem StreamReader-/Writer machen.
06/26/2011 20:11 Mental Wreck#7
Habs mir jez ma durchgelesen und verstehe es genauso wenig :)
Mag uns nicht jemand nen Beispielprojekt geben?
06/26/2011 20:12 _Headsh0t_#8
Quote:
Originally Posted by xKraizy View Post
Warum speicherst du es nicht in eine Textdatei oder Registry? Eine Zeile pro Account. Die Infos trennst du z.B. mit einem ";" würde dann so aussehen:
Link;Benutzername;Passwort;Email... (wenn es nicht nur für dich ist, dann das Passwort verschlüsseln).
Das ganze lässt sich ganz leicht mit einer Schleife und dem StreamReader-/Writer machen.
Weil ich es gerne mit der ListView hätte :awesome:
06/26/2011 20:15 Mental Wreck#9
Quote:
Originally Posted by _Headsh0t_ View Post
Weil ich es gerne mit der ListView hätte :awesome:
Kann ich voll und ganz nachvollziehen, ist auch viel schöner als in ner öden Textdatei.
06/26/2011 20:18 Kraizy​#10
Quote:
Originally Posted by _Headsh0t_ View Post
Weil ich es gerne mit der ListView hätte :awesome:
Hä? Wo liegt da jetzt der Unterschied? Die Spalten hast du doch immer, nur die Einträge musst du laden..
PHP Code:
//Speichern
Dim writer As New IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\accs.txt")
        For 
Each itm As ListViewItem In ListView1.Items
            writer
.WriteLine(itm.Text ";" itm.SubItems(itm.Index).Text)
        
Next
        writer
.Close() 
06/26/2011 20:21 Mental Wreck#11
Währe der "Loader" dann das hier?

Code:
//Laden
Dim loader As New IO.Streamloader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\accs.txt")
        For Each itm As ListViewItem In ListView1.Items
            load.WriteLine(itm.Text & ";" & itm.SubItems(itm.Index).Text)
        Next
        load.Close()
06/26/2011 20:28 Kraizy​#12
PHP Code:
//Laden: Link, Benutzername, Passwort
Dim reader As New IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\accs.txt")
        
Dim line As String
        Dim link 
As String
        Dim name 
As String
        Dim passwort 
As String

        
Do
            
line reader.ReadLine
            
If line "" Then
                
Exit Do
            
End If

            
Dim sLine() As String line.Split(";")
            
link sLine(0)
            
name sLine(1)
            
passwort sLine(2)

            
Dim itm As ListViewItem
            itm 
ListView1.Items.Add(link)
            
itm.SubItems.Add(name)
            
itm.SubItems.Add(passwort)
        
Loop 
Die Textdatei sieht so aus:
link1;name1;passwort1
link2;name2;passwort2
...

Edit: Hatte nen kleinen Fehler beim Speichern, hier das richtige:
PHP Code:
//Speichern: Link, Benutzername, Passwort
Dim writer As New IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\accs.txt")
        For 
Each itm As ListViewItem In ListView1.Items
            writer
.WriteLine(itm.Text ";" itm.SubItems(1).Text ";" itm.SubItems(2).Text)
        
Next
        writer
.Close() 
06/26/2011 20:30 Mental Wreck#13
Och man <.< ich verstehe es nicht...
Magste uns nicht bitte nen Projekt machen wo das genauer erklärt wird :( ?
06/26/2011 20:34 Kraizy​#14
Dann fang lieber erstmal mit was kleinerem an..
Muss jetz weg, hab keine Zeit den Code auszukommentieren.