none
Salvar conteúdo de ListView em arquivo de texto? RRS feed

  • Pergunta

  • Olá! Tudo bem com vocês? Eu preciso salvar itens de um ListView em um arquivo de texto, mas preciso salvar com o SaveFileDialog. O ListView só tem uma coluna, preciso que cada item fique em uma linha. Obrigado!
    sábado, 9 de novembro de 2013 19:06

Respostas

  • Código a Seguir!

    Private Sub ButSalvar_Click(sender As Object, e As EventArgs) Handles ButSalvar.Click
    	If (DialogResult.OK = SaveFileDialog1.ShowDialog() _
    		And Not String.IsNullOrEmpty(SaveFileDialog1.FileName) _
    		And ListViewEmails.Items.Count > 0) Then
    		Dim FileName As String = SaveFileDialog1.FileName
    		Dim Str As New StreamWriter(FileName, True)
    		For Each item As ListViewItem In ListViewEmails.Items
    			Str.WriteLine(item.Text)
    		Next
    		Str.Flush()
    		Str.Dispose()
    		MessageBox.Show("Itens gravado com sucesso", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
    	Else
    		MessageBox.Show("Cancelado ...", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    	End If
    End Sub

    Tela:

    Quando o usuário clicar Salvar vai rodar a rotina logo acima dessa imagem

    o ListView meu ta com o nome de ListViewEmails e o SaveDialog1 com o mesmo nome!

    sábado, 9 de novembro de 2013 23:28
  • Assim igual ta na figura, ou seja, coloca nas suas propriedades! o FileName pode deixar vazio!



    domingo, 10 de novembro de 2013 01:34
  • Se faz debug no código?

    Vou te dar uma dica, estude mais é legal vai tirar você do conforto!

    Código que você precisa

    Private Sub ButAbrir_Click(sender As Object, e As EventArgs) Handles ButAbrir.Click
    	If (DialogResult.OK = OpenFileDialog1.ShowDialog() _
    		And Not String.IsNullOrEmpty(OpenFileDialog1.FileName) _
    		And File.Exists(OpenFileDialog1.FileName)) Then
    		ListViewEmails.Items.Clear()
    		ListViewEmails.MultiSelect = False
    		ListViewEmails.FullRowSelect = True
    		'//
    		Dim str As New StreamReader(OpenFileDialog1.FileName)
    		If (Not IsNothing(str)) Then
    			Dim LinhaTxt As String = ""
    			While (str.Peek() > -1)
    				LinhaTxt = str.ReadLine()
    				Dim Item = ListViewEmails.Items.Add(LinhaTxt)
    				'Item.SubItems(LinhaTxt)
    			End While
    			If (ListViewEmails.Items.Count > 0) Then
    				ListViewEmails.Items(0).Selected = True
    			End If
    		End If
    		MessageBox.Show("Itens carregado com sucesso", "Lendo de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
    	Else
    		MessageBox.Show("Cancelado ...", "Lendo de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    	End If
    End Sub

    E você pode perceber o código já estava implementando!!!

    Boa sorte

    • Marcado como Resposta Free4k domingo, 10 de novembro de 2013 11:48
    domingo, 10 de novembro de 2013 11:41
  • Então eu já fiz todo esse código uma vez não sei se era pra você

    ?

    Olha só o código inteiro agora

    Imports System.IO
    Public Class Form2
        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ListViewEmails.MultiSelect = False
            ListViewEmails.FullRowSelect = True
    
            Dim str As New StreamReader(".\Dados.txt")
            If (Not IsNothing(str)) Then
                Dim LinhaTxt As String = ""
                While (str.Peek() > -1)
                    LinhaTxt = str.ReadLine()
                    Dim Item = ListViewEmails.Items.Add(LinhaTxt)
                    'Item.SubItems(LinhaTxt)
                End While
                If (ListViewEmails.Items.Count > 0) Then
                    ListViewEmails.Items(0).Selected = True
                End If
            End If
        End Sub
    
        Private Sub ButAdicionar_Click(sender As Object, e As EventArgs) Handles ButAdicionar.Click
            If (ListViewEmails.Items.Count > 0) Then
                ListViewEmails.Items(0).Selected = True
                TxtEmail.Text = ListViewEmails.Items(0).Text
                ListViewEmails.Items(0).Remove()
            End If
        End Sub
    
        Private Sub ButSalvar_Click(sender As Object, e As EventArgs) Handles ButSalvar.Click
            If (DialogResult.OK = SaveFileDialog1.ShowDialog() _
                And Not String.IsNullOrEmpty(SaveFileDialog1.FileName) _
                And ListViewEmails.Items.Count > 0) Then
                Dim FileName As String = SaveFileDialog1.FileName
                Dim Str As New StreamWriter(FileName, True)
                For Each item As ListViewItem In ListViewEmails.Items
                    Str.WriteLine(item.Text)
                Next
                Str.Flush()
                Str.Dispose()
                MessageBox.Show("Itens gravado com sucesso", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("Cancelado ...", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            End If
    
            
        End Sub
    End Class

    Agora o OpenFileDialog é bem parecido com o outro cara é só colocar isso e implementar junto com a codificação do Form_Load!

    • Marcado como Resposta Free4k domingo, 10 de novembro de 2013 11:48
    domingo, 10 de novembro de 2013 02:09

Todas as Respostas

  • Código a Seguir!

    Private Sub ButSalvar_Click(sender As Object, e As EventArgs) Handles ButSalvar.Click
    	If (DialogResult.OK = SaveFileDialog1.ShowDialog() _
    		And Not String.IsNullOrEmpty(SaveFileDialog1.FileName) _
    		And ListViewEmails.Items.Count > 0) Then
    		Dim FileName As String = SaveFileDialog1.FileName
    		Dim Str As New StreamWriter(FileName, True)
    		For Each item As ListViewItem In ListViewEmails.Items
    			Str.WriteLine(item.Text)
    		Next
    		Str.Flush()
    		Str.Dispose()
    		MessageBox.Show("Itens gravado com sucesso", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
    	Else
    		MessageBox.Show("Cancelado ...", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    	End If
    End Sub

    Tela:

    Quando o usuário clicar Salvar vai rodar a rotina logo acima dessa imagem

    o ListView meu ta com o nome de ListViewEmails e o SaveDialog1 com o mesmo nome!

    sábado, 9 de novembro de 2013 23:28
  • Olá! Obrigado, só mais uma dúvida: como faço para adicionar Filter, FileName  e Title?
    domingo, 10 de novembro de 2013 01:30
  • Assim igual ta na figura, ou seja, coloca nas suas propriedades! o FileName pode deixar vazio!



    domingo, 10 de novembro de 2013 01:34
  • Olá! Desculpe mas, tenho outra dúvida e não consegui encontrar, talvez você saiba: como faço para abrir o arquivo de texto no ListView, um item em cada linha, com OpenFileDialog? Muito obrigado mesmo!
    domingo, 10 de novembro de 2013 02:07
  • Então eu já fiz todo esse código uma vez não sei se era pra você

    ?

    Olha só o código inteiro agora

    Imports System.IO
    Public Class Form2
        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ListViewEmails.MultiSelect = False
            ListViewEmails.FullRowSelect = True
    
            Dim str As New StreamReader(".\Dados.txt")
            If (Not IsNothing(str)) Then
                Dim LinhaTxt As String = ""
                While (str.Peek() > -1)
                    LinhaTxt = str.ReadLine()
                    Dim Item = ListViewEmails.Items.Add(LinhaTxt)
                    'Item.SubItems(LinhaTxt)
                End While
                If (ListViewEmails.Items.Count > 0) Then
                    ListViewEmails.Items(0).Selected = True
                End If
            End If
        End Sub
    
        Private Sub ButAdicionar_Click(sender As Object, e As EventArgs) Handles ButAdicionar.Click
            If (ListViewEmails.Items.Count > 0) Then
                ListViewEmails.Items(0).Selected = True
                TxtEmail.Text = ListViewEmails.Items(0).Text
                ListViewEmails.Items(0).Remove()
            End If
        End Sub
    
        Private Sub ButSalvar_Click(sender As Object, e As EventArgs) Handles ButSalvar.Click
            If (DialogResult.OK = SaveFileDialog1.ShowDialog() _
                And Not String.IsNullOrEmpty(SaveFileDialog1.FileName) _
                And ListViewEmails.Items.Count > 0) Then
                Dim FileName As String = SaveFileDialog1.FileName
                Dim Str As New StreamWriter(FileName, True)
                For Each item As ListViewItem In ListViewEmails.Items
                    Str.WriteLine(item.Text)
                Next
                Str.Flush()
                Str.Dispose()
                MessageBox.Show("Itens gravado com sucesso", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("Cancelado ...", "Gravação de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            End If
    
            
        End Sub
    End Class

    Agora o OpenFileDialog é bem parecido com o outro cara é só colocar isso e implementar junto com a codificação do Form_Load!

    • Marcado como Resposta Free4k domingo, 10 de novembro de 2013 11:48
    domingo, 10 de novembro de 2013 02:09
  • Tentei isso mas deu erro:
     Dim str As New StreamReader(OpenFileDialog1.FileName)


    • Editado Free4k domingo, 10 de novembro de 2013 02:38
    domingo, 10 de novembro de 2013 02:28
  • Se faz debug no código?

    Vou te dar uma dica, estude mais é legal vai tirar você do conforto!

    Código que você precisa

    Private Sub ButAbrir_Click(sender As Object, e As EventArgs) Handles ButAbrir.Click
    	If (DialogResult.OK = OpenFileDialog1.ShowDialog() _
    		And Not String.IsNullOrEmpty(OpenFileDialog1.FileName) _
    		And File.Exists(OpenFileDialog1.FileName)) Then
    		ListViewEmails.Items.Clear()
    		ListViewEmails.MultiSelect = False
    		ListViewEmails.FullRowSelect = True
    		'//
    		Dim str As New StreamReader(OpenFileDialog1.FileName)
    		If (Not IsNothing(str)) Then
    			Dim LinhaTxt As String = ""
    			While (str.Peek() > -1)
    				LinhaTxt = str.ReadLine()
    				Dim Item = ListViewEmails.Items.Add(LinhaTxt)
    				'Item.SubItems(LinhaTxt)
    			End While
    			If (ListViewEmails.Items.Count > 0) Then
    				ListViewEmails.Items(0).Selected = True
    			End If
    		End If
    		MessageBox.Show("Itens carregado com sucesso", "Lendo de Texto", MessageBoxButtons.OK, MessageBoxIcon.Information)
    	Else
    		MessageBox.Show("Cancelado ...", "Lendo de Texto", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    	End If
    End Sub

    E você pode perceber o código já estava implementando!!!

    Boa sorte

    • Marcado como Resposta Free4k domingo, 10 de novembro de 2013 11:48
    domingo, 10 de novembro de 2013 11:41
  • Muito Obrigado!
    domingo, 10 de novembro de 2013 11:48