A classe SaveFileDialog permite que os usuários naveguem no sistema de arquivos e selecionem os arquivos a serem salvos.
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 void button1_Click(object sender, System.EventArgs e)
{
Stream myStream ;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
saveFileDialog1.FilterIndex = 2 ;
saveFileDialog1.RestoreDirectory = true ;
if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if((myStream = saveFileDialog1.OpenFile()) != null)
{
//codigo para escrever o stream
myStream.Close();
}
}
}
|
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 C# 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() :
this.saveFileDialog1 = new
System.Windows.Forms.SaveFileDialog();
this.saveFileDialog1.FileName = "saveFileDialog1";
Para criar um controle SaveFileDialog em tempo de execução usando C# basta criar uma instância da classe SaveFileDialog e definir suas propriedades:
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():
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:
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'). |
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:
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:
Disposed | Ocorre quando o componente é descartado por uma chamada do método Dispose. (Herdado de Component.) |
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 void button1_Click(object sender, EventArgs e) { // abre uma janela de dialógo Salvar Arquivo saveFileDialog1.ShowDialog(); } //usando o evento FileOK para tratar a opção Salvar da caixa de diálogo private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { //pega o nome do arquivo string name = saveFileDialog1.FileName; File.WriteAllText(name, "test"); } |
Exemplos usando SaveFileDialog
Abra o Visual Studio 2012 for Windows Desktop e crie um novo projeto usando o modelo Windows Forms Application com o nome SaveFIleDialogDemo;
Menu File->New Project -> Windows Forms Application , Name = OpenFileDialogDemo;
No formulário padrão form1.cs inclua a partir da ToolBox os seguintes controles:
Defina o seguinte leiaute no formulário form1.cs:
A seguir inclua o seguinte código no formulário:
using System; using System.Windows.Forms; using System.IO; namespace
SaveDialogBox_CSharp
private void btnSalvar_Click(object sender, EventArgs e)
//define o titulo
//Abre a caixa de dialogo e determina qual botão
foi pressionado
//Se o ousuário pressionar o botão Salvar
//Cria um escrito que irá escrever
no stream |
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.
if (resultado == DialogResult.OK) { //Cria um stream usando o nome do arquivo FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
//Cria um escrito que irá escrever
no stream |
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.
Assim destacamos como usar o controle SaveFileDialog que é muito útil e versátil na linguagem C# (e também na VB .NET)
Pegue o projeto completo aqui: SaveDialogBox_CSharp.zip
Gálatas 1:11 Mas faço-vos saber, irmãos, que o evangelho que por mim foi anunciado não é segundo os homens;
Gálatas 1:12 porque não o recebi de homem algum, nem me foi ensinado; mas o recebi por revelação de Jesus Cristo.
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. Veja também os Cursos com vídeo aulas e projetos exemplos: |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Sobrecarga de operadores (Operator Overloading) - Macoratti.net