VB .NET - Usando o controle SaveFileDialog
No artigo de hoje vou apresentar os conceitos, métodos e propriedades do controle SaveFileDialog para a linguagem VB .NET. |
A classe SaveFileDialog permite que os usuários naveguem no sistema de arquivos e selecionem os arquivos a serem salvos especificando o nome do arquivo a ser salvo. Esta classe herda da classe FileDialog.
Essa classe pode abrir e substituir um arquivo existente ou criar um novo arquivo.
A maioria da funcionalidade para esta classe é encontrada na classe FileDialog.
A figura abaixo exibe a imagem da ToolBox destacando a aba Dialogs onde se encontram os controles de diálogos, e , dentre eles vemos o SaveFileDialog :
Abaixo vemos o controle SaveFileDialog em ação, onde observamos características idênticas ao Windows Explorer como a navegação pelos arquivos e sua seleção:
A caixa de diálogo retorna o caminho e o nome do arquivo que o usuário selecionou na caixa de diálogo. No entanto, você deve escrever o código para gravar os arquivos no disco.
Como salvar um arquivo usando o SaveFileDialog :
Nota: A seguir um exemplo usando o método OpenFile para salvar o arquivo:
Private Sub button1_Click(sender As Object, e As System.EventArgs)
Dim myStream As Stream
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
saveFileDialog1.FilterIndex = 2
saveFileDialog1.RestoreDirectory = True
If saveFileDialog1.ShowDialog() = DialogResult.OK Then
myStream = saveFileDialog1.OpenFile()
If (myStream IsNot Nothing) Then
' Codigo para escrever o stream
myStream.Close()
End If
End If
End Sub
|
Criando um SaveFileDialog
Podemos criar um controle SaveFileDialog em tempo de projeto arrastando o controle da caixa de ferramentas(ToolBox) e soltando no formulário Windows Forms.
Ao concluir esta tarefa veremos o controle ser exibido com o nome padrão na base do formulário, e, se pressionarmos F4 veremos também a janela de propriedades do controle onde podemos definir diversas propriedades para o controle:
Na linguagem VB .NET ao incluir o controle no formulário será incluída de forma automática duas linhas de código no projeto na seção #region Windows Form Designer generated code no interior da rotina private void InitializeComponent() :
Me.saveFileDialog1 =
new System.Windows.Forms.SaveFileDialog()
Para criar um controle SaveFileDialog em tempo de execução usando VB .NET
basta criar uma instância da classe SaveFileDialog e definir suas
propriedades:
Dim svdlg as New SaveFileDialog()
O método ShowDialog() é quem exibe a janela do controle para seleção do caminho e nome do arquivo:
saveFileDialog1.ShowDialog()
O código abaixo é suficiente para criar e abrir a janela de diálogo do controle
saveFileDialog():
Dim
svdlg As
New
SaveFileDialog() If svdlg.ShowDialog() = Windows.Forms.DialogResult.OK Then MessageBox.Show(svdlg.FileName)End
If |
Usamos a propriedade DialogResult para obter o resultado do fechamento da janela de diálogo.
Os valores disponíveis na enumeração DialogResult são:
Abort | A caixa de diálogo retorna o valor Abort (normalmente enviado de um botão rotulado como ' Abortar '). |
Cancel | A caixa de diálogo retorna o valor Cancel (normalmente enviado de um botão rotulado como ' Cancelar '). |
Ignore | A caixa de diálogo retorna o valor Ignore (normalmente enviado a partir de um botão rotulado ignorar). |
No | A caixa de diálogo retorna o valor No (normalmente enviado a partir de um botão rotulado 'Não'). |
None | Nothing é retornado pelo formulário da caixa de diálogo. Isso significa que a caixa de diálogo modal continua em execução. |
OK | O valor do retorno do dialog box OK (normalmente enviado por um botão com etiqueta OK). |
Retry | A caixa de diálogo retorna o valor Retry (normalmente enviado de um botão rotulado como ' Repetir '). |
Yes | A caixa de diálogo retorna o valor Yes (normalmente enviado de um botão rotulado como 'Sim'). |
Nota: Os valores são exibidos no código via Intellisense:
Se um arquivo for selecionado e o botão Salvar for clicado estamos exibindo o nome do arquivo usando a propriedade FileName.
Abaixo vemos o código onde exibimos uma mensagem ao usuário quando o botão Cancelar foi clicado:
Dim svdlg As New SaveFileDialog()If svdlg.ShowDialog()
= Windows.Forms.DialogResult.OK
Then
MessageBox.Show(svdlg.FileName)
Else
MessageBox.Show("Você
clicou em Cancelar")
End
If
As principais propriedades do controle SaveDialogBox são:
AddExtension | Obtém ou define um valor indicando se a caixa de diálogo irá adicionar automaticamente uma extensão para um nome de arquivo se o usuário omitir a extensão. (Herdado de FileDialog.) |
CheckFileExists | Obtém ou define um valor que indica se a caixa de diálogo exibe um aviso se o usuário especificar um nome de arquivo que não existe. (Herdado de FileDialog.) |
CheckPathExists | Obtém ou define um valor que indica se a caixa de diálogo exibe um aviso se o usuário especificar um caminho que não existe. (Herdado de FileDialog.) |
DefaultExt | Obtém ou define a extensão de nome de arquivo padrão. (Herdado de FileDialog.) |
FileName | Obtém ou define uma seqüência de caracteres que contém o nome do arquivo selecionado na caixa de diálogo de arquivo. (Herdado de FileDialog.) |
FileNames | Obtém os nomes de arquivo de todos os arquivos selecionados na caixa de diálogo. (Herdado de FileDialog.) |
Filter | Obtém ou define a string de filtro para o nome atual, que determina as opções que aparecem em "Salvar como tipo de arquivo" ou "Arquivos do tipo" caixa na caixa de diálogo. (Herdado de FileDialog.) |
FilterIndex | Obtém ou define o índice do filtro atualmente selecionado na caixa de diálogo de arquivo. (Herdado de FileDialog.) |
InitialDirectory | Obtém ou define o diretório inicial exibido pela caixa de diálogo de arquivo. (Herdado de FileDialog.) |
RestoreDirectory | Obtém ou define um valor indicando se a caixa de diálogo restaura o diretório atual antes de fechar. (Herdado de FileDialog.) |
ShowHelp | Obtém ou define um valor indicando se o botão de Ajuda é exibido na caixa de diálogo de arquivo. (Herdado de FileDialog.) |
Title | Obtém ou define o título da caixa de diálogo de arquivo. (Herdado de FileDialog.) |
Os eventos disponíveis para o controle SaveDialogBox são:
FileOk | Ocorre quando o usuário clica no botão Abrir ou Salvar em uma caixa de diálogo de arquivo. (Herdado de FileDialog.) |
HelpRequest | Ocorre quando o usuário clica no botão de Ajuda em uma caixa de diálogo comum. (Herdado de CommonDialog.) |
Podemos usar o evento FileOk para tratar a seleção do usuário quando o botão Abrir ou Salvar for clicado:
Private
Sub
Button1_Click(sender As
Object,
e As
EventArgs)
Handles
Button1.Click 'abre uma caixa de diálogo SaveFileDialog1.ShowDialog() End Sub Private Sub SaveFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk 'pega o nome
do arquivo End Sub |
A seguir veremos alguns exemplos usando o componente SaveFileDialog no VB .NET.
Recursos usados :
Exemplos usando SaveFileDialog
Abra o Visual Studio 2013 for Windows Desktop e crie um novo projeto usando o modelo Windows Forms Application com o nome SaveFileDialog_VBNET_Demo;
Menu File->New Project -> Windows Forms Application , Name = SaveFileDialog_VBNET_Demo; (Linguagem Visual Basic)
No formulário padrão form1.vb inclua a partir da ToolBox os seguintes controles:
Defina o seguinte leiaute no formulário form1.vb:
A seguir inclua o seguinte código no formulário:
Imports System.IO
Public Class Form1
Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
'verifica se existe algo digitado na caixa de texto
If String.IsNullOrEmpty(txtTexto.Text) Then
MessageBox.Show("Informe algo na caixa de texto")
Return
End If
'define o titulo
svfd1.Title = "Salvar Arquivo Texto"
'Define as extensões permitidas
svfd1.Filter = "Text File|.txt"
'define o indice do filtro
svfd1.FilterIndex = 0
'Atribui um valor vazio ao nome do arquivo
svfd1.FileName = "Mac_" + DateTime.Now.ToString("ddMMyyyy_HHmmss")
'Define a extensão padrão como .txt
svfd1.DefaultExt = ".txt"
'define o diretório padrão
svfd1.InitialDirectory = "c:\dados"
'restaura o diretorio atual antes de fechar a janela
svfd1.RestoreDirectory = True
'Abre a caixa de dialogo e determina qual botão foi pressionado
Dim resultado As DialogResult = svfd1.ShowDialog()
'Se o usuário pressionar o botão Salvar
If resultado = DialogResult.OK Then
'Cria um stream usando o nome do arquivo
Dim fs As New FileStream(svfd1.FileName, FileMode.Create)
'Cria um escritor que irá escrever no stream
Dim writer As New StreamWriter(fs)
'escreve o conteúdo da caixa de texto no stream
writer.Write(txtTexto.Text)
'fecha o escrito e o stream
writer.Close()
Else
'exibe mensagem informando que a operação foi cancelada
MessageBox.Show("Operação cancelada")
End If
End Sub
End Class
|
O código já esta comentado e basicamente salva o conteúdo digitado na caixa de texto txtTexto usando o SaveDialog para abrir uma caixa de diálogo Salvar Como;
O nome do arquivo apresentando é definido pelo código: saveFileDialog1.FileName = "Mac_" + DateTime.Now.ToString("ddMMyyyy_HHmmss");
A figura a seguir mostra a caixa de diálogo sendo apresentada:
Se clicar no botão Salvar será criado um stream com o nome do arquivo no modo Create usando a enumeração FileMode, especifica como o sistema operacional deve abrir um arquivo. O modo Create especifica que o sistema operacional deve criar um novo arquivo. Se o arquivo já existir, ele será substituído.
'Se o usuário pressionar o botão Salvar
If resultado = DialogResult.OK Then
'Cria um stream usando o nome do arquivo
Dim fs As New FileStream(svfd1.FileName, FileMode.Create)
'Cria um escritor que irá escrever no stream
Dim writer As New StreamWriter(fs)
'escreve o conteúdo da caixa de texto no stream
writer.Write(txtTexto.Text)
'fecha o escrito e o stream
writer.Close()
Else
'exibe mensagem informando que a operação foi cancelada
MessageBox.Show("Operação cancelada")
End If
A seguir criamos uma instância de StreamWriter() para escrever o texto no arquivo.
Se o usuário clicar no botão Cancelar será exibida a mensagem de que a operação foi canceladas.
Nota: Poderíamos usar o código mais simplificado conforme mostrado a seguir:
Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
svfd1.Filter = "Arquivos TXT (*.txt*)|*.txt"
If svfd1.ShowDialog = Windows.Forms.DialogResult.OK Then
My.Computer.FileSystem.WriteAllText(svfd1.FileName, txtTexto.Text, True)
End If
End Sub
|
Pegue o projeto completo aqui: SaveFileDialog_VBNET_Demo.zip
(Disse Jesus) Assim, pois, qualquer de vós, que não renuncia a tudo quanto tem,
não pode ser meu discípulo.
Lucas 14:33
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
TreeView - Arrastar e Soltar (Drag and Drop) - Macoratti.net