none
saveDialog RRS feed

  • Domanda

  • devo salvare il contenuto di una listbox in un file di testo e questo file di testo lo devo creare con la classica finestra del "salva con nome", mi funziona tutto a parte che il file lo devo creare prima.

    come faccio a risolvere questa cosa?

    questo è il codice che ho fatto fino ad ora:

     private void btn_export_Click(object sender, EventArgs e)
            {
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                saveFileDialog1.Title = "Save text Files";
                saveFileDialog1.CheckFileExists = true;
                saveFileDialog1.CheckPathExists = true;
                saveFileDialog1.DefaultExt = "txt";
                saveFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
                saveFileDialog1.FilterIndex = 2;
                saveFileDialog1.RestoreDirectory = true;
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {

                    StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
                    for (int i = 0; i < listb1.Items.Count; i++)
                    {
                        listb1.Text = saveFileDialog1.FileName;
                        //sw.WriteLine(listb1.Items[i].ToString());

                    }
                    sw.Close();

                }


            }

    lunedì 30 settembre 2019 08:54

Risposte

Tutte le risposte

  • Dovresti usare File.WriteAllText()
    lunedì 30 settembre 2019 15:12
  • Ciao, ho sistemato il tuo codice in modo che funzioni perfettamente. Nel codice ho inserito commento dove dico cosa ho fatto.

                //Semplificata l'inizializzazione della variabile
                SaveFileDialog saveFileDialog1 = new SaveFileDialog()
                {
                    Title = "Save text Files",
                    CheckFileExists = false,    //Era True
                    CheckPathExists = false,    //Era True
                    RestoreDirectory = true,
                    DefaultExt = "txt",
                    Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*",
                    FilterIndex = 2,
                    //Settata la proprietà CreatePrompt a false
                    CreatePrompt = false
                };
    
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    //Utilizzato using per semplificare il tutto
                    using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, true))
                    {
                        for (int i = 0; i < listBox1.Items.Count; i++)
                        {
                            listBox1.Text = saveFileDialog1.FileName;
                            sw.WriteLine(listBox1.Items[i].ToString());
    
                        }
                    }
                }

    Spero risolva il tuo problema!

    • Proposto come risposta spartacus04 martedì 1 ottobre 2019 15:15
    martedì 1 ottobre 2019 15:12