Home / Programmazione / C# - Asp.NET / C# SaveFileDialog
Mattepuffo

C# SaveFileDialog

C# SaveFileDialog

.NET Framework mette a disposizione il dialog SaveFileDialog per salvare i file.

Vediamo come implementarlo in C# in un WindowsForm.

Nel nostro form principale avremo una voce di menu alla quale sarà associata un'azione del genere:

private void saveItem_Click(object sender, EventArgs e)
{
    try
    {
       DialogSalvaTxt ds = new DialogSalvaTxt();
       ds.dialog("TESTO DA SALVARE");
    }
    catch (IOException ex)
    {
       MessageBox.Show(ex.Message);
    }
}

DialogSalvaTxt è la classe preposta alla creazione del SaveFileDialog; viene anche richiamato un metodo che vuola una string come parametro.

Vediamo in cosa consiste la classe:

using System;
using System.Windows.Forms;
using System.IO;

class DialogSalvaTxt
{
   public void dialog(string text)
   {
     SaveFileDialog sf = new SaveFileDialog();
     sf.Title = "Salva";
     sf.Filter = "TXT|*.txt|Tutti i file|*.*";
     sf.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
     sf.ShowDialog();
     if (sf.FileName != "")
     {
       try
       {
          FileStream stream = (FileStream)sf.OpenFile();
          StreamWriter writer = new StreamWriter(stream);
          writer.WriteLine(text);
          writer.Flush();
          writer.Close();
          stream.Close();
       }
       catch (IOException ex)
       {
         throw new Exception(ex.Message);
       }
     }
   }
}

Istanziamo un oggetto SaveFileDialog.

Sotto impostiamo alcune opzioni:

  • il titolo della finestra
  • i filtri => io ne ho messi solo due, ma se ne possono mettere quanti ve ne pare
  • la directory iniziale => impostata sulla home directory
  • mostriamo il dialog

Sotto controlliamo che il nome del file non sia vuoto, e in caso salviamo il file.

Prima usiamo un FileStream per creare un file vuoto; il SaveFileDialog ci avvertirà se stiamo sovrascrivendo un file.

Poi usiamo uno StreamWriter per scrivere il contenuto della string passata come parametro dentro al file.

Chiudiamo stream e writer.

Le classi di riferimento sono queste:

Se non ci risentiamo BUON ANNO!!!