otvorenie txt suboru do listview   otázka

VB.NET

Ahoj!

Mam otazku: Napisal som kod na ukladanie dát z listview do txt suboru a potreboval tento text ktory nim uložím opať otvoriť do listview. problem je ale že všetko čo som uložil (každý stlpec oddeleny meddzerou "") sa mi otvorí do listview iba do jedneho stlpca.

Tu je kod:

Dim r = New IO.StreamReader("C:\Users\Peter\Documents\test.txt")

While (r.Peek() > -1)

ListView1.Items.Add(r.ReadLine)

End While

r.Close()

Vie niekto mi s tym poradiť? ako všetko otvoriť na svoje povodne miesto?

Dakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na to si budete muset napsat vlastní kód.

Asi bych si udělal DataTable, do něj bych definoval sloupce a potom přidával v cyklu řádky, které přečtete z toho textového souboru a rozdělíte podle mezery. Rozdělíte je klasicky metodou string.Split(' ') a každý index toho pole bude znamenat jeden sloupec.

Celý ten DataTable pak můžete hodit do ListView.DataSource.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nešlo by to porišiť nejako jednoducho tie subitemi do toho kodu čo som sem uviedol?

dik

nahlásit spamnahlásit spam 0 odpovědětodpovědět

neoddeluj ich medzerou ale vbcrlf (znak pre novy riadok)

takze aj ked ho otvoris v notepade bude v riadkoch

nepouzivaj peek >-1, ale r.EndOfStream

Dim r as New IO.StreamReader("C:\Users\Peter\Documents\test.txt")
Do Until r.EndOfStream
ListView1.Items.Add(r.ReadLine)
Loop

postni aj tvoj kod na ukladanie do txt

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ale stale to hadze všetko z txt to jedneho stlpca. Ja by som práve potrreboval aby každa medzera v riadku txt znamenala novy stlpec v listview.

Jo a kod na ukladanie:

Dim myFile As String = "C:\Users\Peter\Documents\test.txt" '//file location

Dim myWriter As New IO.StreamWriter(myFile)

For Each myItem As ListViewItem In ListView1.Items

myWriter.WriteLine(myItem.Text & "" & myItem.SubItems(1).Text)

Next

myWriter.Close()

nahlásit spamnahlásit spam 0 odpovědětodpovědět

v myItem.text nebude nikdy medzera?

daj radsej cely projekt

Dim myFile As String = "C:\Users\Peter\Documents\test.txt" 
Dim myWriter As New IO.StreamWriter(myFile)

For Each myItem As ListViewItem In ListView1.Items
myWriter.WriteLine(myItem.Text)
myWriter.WriteLine(myItem.SubItems(1).Text)
Next

myWriter.Close()

Dim r as New IO.StreamReader("C:\Users\Peter\Documents\test.txt")
Do Until r.EndOfStream
ListView1.Items.Add(r.ReadLine)
ListView1.Items(ListView1.Items.Count-1).SubItems(1).Text=r.ReadLine
Loop
nahlásit spamnahlásit spam 0 odpovědětodpovědět

No cely projekt na tom neni nič lebo bez tohto sa nepohnem dalej aby som mohol pokračovať.

V zasade potrebujem vytvoriť niečo aby som listview mohol ukladať data to je jedno aky sposobom a mohol ukladať do suboru a znova načítať. a potrrebujem aby sa mi jednotlive veci zobrazovali na tom istom mieste ako predtym tym myslím aby všetko sa uložilo do spravneho stlpca a riadku ako predtym.

dik

nahlásit spamnahlásit spam 0 odpovědětodpovědět

to mas tabulkove zobrazenie?

ak ano:

Private Sub SaveListView()

    Dim myWriter As New IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\test.txt")

    For Each myItem As ListViewItem In ListView1.Items
        Dim myText As String = ""

        For Each mySubItem In myItem.SubItems
            myText += mySubItem.Text + ","
        Next

        myWriter.WriteLine(myText)
    Next

    myWriter.Close()

End Sub


Private Sub LoadListView()

    ListView1.Items.Clear()

    Dim r As New IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\test.txt")

    Do Until r.EndOfStream
        Dim myText As String = r.ReadLine
        Dim arr(30) As String

        Dim arrpointer As Integer = 0

        For Each line In myText.Split(",")
            arr(arrpointer) = line
            arrpointer += 1
        Next

        Dim myItem As New ListViewItem(arr)
        ListView1.Items.Add(myItem)
    Loop
    r.Close()

End Sub
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skvele diky moc za pomoc. Este ked sa smiem spytať mam nastavene multiline, mam tam niekolko stlpcov existuje nejaky prikaz na doubleclick aby mi to otvorilo další form?

Diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak to cele testujem ešte jedna chyba sa mi tu vynara: Index was outside the bounds of the array." robí sa to vtedy ako vymažem niektorý riadok z tabulky a uložím ho a snažím sa ho znova načítať.

Dik

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To posledne disregard vyriešil som to :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

nad kodom mas dva comboboxy

vlavo vyberies komponent (tlacitko, okno, listview...) a vpravo jeho event (klik, prejdenie mysou, zavretie okna)

po vybrati eventu sa ti v kode vytvori nova funkcia, ktora je vykonana pri tom evente

vsimni si za nazvom funkcie "Handles ".....

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback