Usuário com melhor resposta
Como usar o OpenFileDialog e SaveFileDialog?

Pergunta
-
Olá! Preciso usar o OpenFileDialog no lugar de um caminho, como posso fazer isto? No lugar de "C:\Users\Free4k\Mails\e-mail (1).txt" quero usar um OpenFileDialog, e depois um SaveFileDialog para salvar o arquivo de texto do ListView. Procurei na internet, porém não encontrei. Obrigado!
Veja o código do meu programa:
Dim str As New StreamReader("C:\Users\Free4k\Desktop\Mails\e-mail (1).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
- Editado Free4k quinta-feira, 19 de fevereiro de 2015 11:04
sábado, 9 de novembro de 2013 17:33
Respostas
-
Ueh!:
Eu já vi essa dúvida ???
Exemplos:
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 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
Ta ai os dois exemplos!
- Sugerido como Resposta Fulvio Cezar Canducci Dias domingo, 10 de novembro de 2013 13:44
- Marcado como Resposta Giovani Cr segunda-feira, 11 de novembro de 2013 13:54
domingo, 10 de novembro de 2013 11:46
Todas as Respostas
-
Eu uso uma funções simples para ler ou gravar novos ficheiros e pastas.
O retorno destas funções é vazio("") caso seja cancelada a caixa de diálogo.
Public Function GetFile() As String 'Abrir ficheiro existente 'Não pode escolher um ficheiro inexistente Dim Dlg As New OpenFileDialog Dlg.Filter = "Ficheiros de texto(*.txt)|*.txt|Todos os ficheiros(*.*)|*.*" Dlg.FilterIndex = 0 Dlg.ShowDialog() Return Dlg.FileName End Function Public Function SaveFile() As String 'Criar ficheiro. 'Pode eventualmente selecionar um ficheiro existente Dim Dlg As New SaveFileDialog Dlg.Filter = "Ficheiros de texto(*.txt)|*.txt" Dlg.FilterIndex = 0 Dlg.ShowDialog() Return Dlg.FileName End Function Public Function GetFolder() As String 'Obter pasta com a possibilidade de criar nova Dim Dlg As New FolderBrowserDialog Dlg.ShowDialog() Return Dlg.SelectedPath End Function
- Editado Nando Freitas sábado, 9 de novembro de 2013 23:09
sábado, 9 de novembro de 2013 23:09 -
Como faço para usar essa função no ListView?domingo, 10 de novembro de 2013 01:44
-
É só substituir as duas primeiras instruções da tua rotina:
Dim fs As String = GetFile() 'nome do arquivo a abrir If fs <> "" Then Dim str As New StreamReader(fs) 'abrir o arquivo para leitura 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 str.Close() 'terminar a leitura do arquivo End If
domingo, 10 de novembro de 2013 07:46 -
Ueh!:
Eu já vi essa dúvida ???
Exemplos:
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 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
Ta ai os dois exemplos!
- Sugerido como Resposta Fulvio Cezar Canducci Dias domingo, 10 de novembro de 2013 13:44
- Marcado como Resposta Giovani Cr segunda-feira, 11 de novembro de 2013 13:54
domingo, 10 de novembro de 2013 11:46 -
Obrigado! Você já tinha me respondido, esta pergunta fiz antes, porém ninguém tinha respondido. Então fiz a outra. Obrigado novamente.domingo, 10 de novembro de 2013 13:40