Выигрышная форма: SaveFileDialog - PullRequest
2 голосов
/ 20 февраля 2012

Я добавил следующий фрагмент кода для кнопки сохранения:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{                
    FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
    StreamWriter writer = new StreamWriter(fs);
    writer.Write(twexit.Text);       // twexit is previously created  
    writer.Close();
    fs.Close();
}

Когда я набираю имя файла и нажимаю сохранить, он говорит, что файл не существует.Я знаю, что он не существует, но я установил FileMode.Create.Так не должен ли он создать файл, если он не существует?

Ответы [ 3 ]

4 голосов
/ 20 февраля 2012

В SaveFileDialog есть опция CheckFileExists, которая заставит диалоговое окно показать это сообщение, если выбранный файл не существует.Вы должны оставить это значение false (это значение по умолчанию).

1 голос
/ 02 июля 2013

Вы можете просто использовать это:

File.WriteAllText(saveFileDialog1.FileName, twexit.Text);

вместо большого количества кода с потоком.Создайте новый файл или перезапишите его.Файл является классом System.Io.Если вы хотите сказать, существует ли файл, используйте

File.Exist(filePath)

Пока

0 голосов
/ 20 февраля 2012

Используйте вот так:

     SaveFileDialog dlg = new SaveFileDialog();

        dlg.Filter = "csv files (*.csv)|*.csv";
        dlg.Title = "Export in CSV format";

        //decide whether we need to check file exists
        //dlg.CheckFileExists = true;

        //this is the default behaviour
        dlg.CheckPathExists = true;

        //If InitialDirectory is not specified, the default path is My Documents
        //dlg.InitialDirectory = Application.StartupPath;

        dlg.ShowDialog();
        // If the file name is not an empty string open it for saving.
        if (dlg.FileName != "")

        //alternative if you prefer this
        //if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK
            //&& dlg.FileName.Length > 0)

        {
            StreamWriter streamWriter = new StreamWriter(dlg.FileName);
            streamWriter.Write("My CSV file\r\n");
            streamWriter.Write(DateTime.Now.ToString());
            //Note streamWriter.NewLine is same as "\r\n"
            streamWriter.Write(streamWriter.NewLine);
            streamWriter.Write("\r\n");
            streamWriter.Write("Column1, Column2\r\n");
            //…
            streamWriter.Close();
        }

        //if no longer needed
        //dlg.Dispose();
...