using using using using using using using using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Windows; System.Windows.Controls; System.Windows.Data; System.Windows.Documents; System.Windows.Input; System.Windows.Media; System.Windows.Media.Imaging; System.Windows.Shapes; // Namespaces para trabalhar com arquivos using Microsoft.Win32; using System.IO; namespace Aula1 { public partial class Arquivo : Window { private Boolean flagEdit = false; // esta variável será utilizada para verificar se o texto foi ou não modificado. private OpenFileDialog DialogoAbrir = null; // Caixa de Diálogo abrir arquivo. private SaveFileDialog DialogoSalvar = null; // Caixa de Dialogo salvar arquivo. public Arquivo() { InitializeComponent(); // Cria o objeto Caixa de Diálogo Abrir Arquivo DialogoAbrir = new OpenFileDialog(); DialogoAbrir.FileOk += AbrirArquivoOk; // Define o método que será executado quando digitado OK na caixa de diálogo // Cria o objeto Caixa de Diálogo Salvar Arquivo DialogoSalvar = new SaveFileDialog(); DialogoSalvar.FileOk += SalvarArquivoOK; // Define o método que será executado quando digitado OK na caixa de diálogo } #region MÉTODOS PARA ABRIR UM ARQUIVO /// /// /// /// /// <summary> Exibe a caixa de diálogo para abrir arquivo. </summary> <param name="sender">descreve o argumento sender</param> <param name="e">argumentos recebidos</param> private void Abrir_Click(object sender, RoutedEventArgs e) { if (flagEdit) { flagTest(); } DialogoAbrir.ShowDialog(); } /// <summary> /// Abre o arquivo e exibe seu conteúdo. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AbrirArquivoOk(object sender, System.ComponentModel.CancelEventArgs e) { TextReader reader = null; try { //throw new System.ArgumentException("Parameter cannot be null", "original"); string caminho = DialogoAbrir.FileName.ToString(); FileInfo src = new FileInfo(caminho); NomeArquivo.Text = src.Name; Conteudo.Text = ""; reader = src.OpenText(); string line = reader.ReadLine(); while (line != null) { Conteudo.Text += line + '\n'; line = reader.ReadLine(); } } catch (Exception ex) { //AppManager.LogExceptionXml xx = new AppManager.LogExceptionXml(); //xx.SaveException(ex); //AppManager.AppExceptionsTxt appEx = new AppManager.AppExceptionsTxt(); //appEx.SaveException(ex); MessageBox.Show("Erro: " + ex.Message); } finally { if (reader != null) reader.Close(); } } #endregion #region MÉTODOS PARA SALVAR UM ARQUIVO /// <summary> /// Método executado quando é pressionado o botão salvar. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Salvar_Click(object sender, RoutedEventArgs e) { Save(); // executa o método salvar. } /// <summary> /// Método para Salvar o arquivo. /// </summary> private void Save() { if (DialogoAbrir.FileName != "") { if (File.Exists(DialogoAbrir.FileName)) { MessageBoxResult res = MessageBox.Show("O arquivo já existe, deseja regravar?", "Regravar SaLvar", MessageBoxButton.OKCancel); if (res == MessageBoxResult.OK) { grava(DialogoAbrir.FileName); } } } else { // Exibe a caixa de dialogo salvar. DialogoSalvar.ShowDialog(); } } private void grava(string caminho) { File.WriteAllText(caminho, Conteudo.Text, Encoding.UTF8); Conteudo.Text = ""; } /// <summary> /// Método executado quando pressionado o botão salvar como. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SalvarComo_Click(object sender, RoutedEventArgs e) { // exibe a caixa de dialogo salvar. DialogoSalvar.ShowDialog(); } /// <summary> /// Método executado quando pressionado o botão Salvar na caixa de dialogo salvar. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SalvarArquivoOK(object sender, System.ComponentModel.CancelEventArgs e) { grava(DialogoSalvar.FileName); } /// <summary> /// Método executado quando o texto no controle Conteudo é modificado. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Conteudo_TextChanged(object sender, TextChangedEventArgs e) { if (!string.IsNullOrEmpty(Conteudo.Text)) { // ativa o flag de edição e os botões para salvar flagEdit = true; Salvar.IsEnabled = true; SalvarComo.IsEnabled = true; } else { // desativa o flag de edição e os botões para salvar flagEdit = false; Salvar.IsEnabled = false; SalvarComo.IsEnabled = false; } } /// /// /// /// /// <summary> Executado quando pressionado o botão fechar. </summary> <param name="sender"></param> <param name="e"></param> private void Fechar_Click(object sender, RoutedEventArgs e) { flagTest(); } /// <summary> /// Método executado quando pressionado o botão fechar do form. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { flagTest(); } /// <summary> /// Verifica se o texto foi modificado. se foi exibe a opção para salvar. /// </summary> /// <returns></returns> private Boolean flagTest() { if (flagEdit) { MessageBoxResult res = MessageBox.Show("Deseja Salvar o texto?", "SaLvar", MessageBoxButton.YesNoCancel); if (res == MessageBoxResult.Yes) { // Salva o arquivo Save(); return true; } else if (res == MessageBoxResult.No) { return false; } } return false; } #endregion } }