2016-03-13 2 views
0

Не удается получить диалог сохранения файла для работы с моей программой. Я использую visual studio 2012. Откроется диалоговое окно сохранения, и я могу поместить имя файла, но оно фактически не будет сохранено.Диалоговое окно сохранения файла

 try 
        { 
         //declare a stream writer variables 
         StreamWriter outputfile; 

         //create a file and get a streamwriter object 
         outputfile = File.CreateText("organisms.txt"); 

         //write the data to the file 
         for (int b = 0; b < listBox1.Items.Count; b++) 
         { 
          outputfile.WriteLine(listBox1.Items[b].ToString()); 
         } 

         if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
         { 
          MessageBox.Show("You clicked the save button"); 
         } 

         else 
         { 
          MessageBox.Show("You hit the cancel button"); 
         } 

         //close the file 
         outputfile.Close(); 
        } 
+0

@VivekSinghNegi, что не имеет смысла – Itsik

+0

Используйте this.Close() вместо outputfile.Close(); – CodeConstruct

ответ

1

Я собираюсь использовать псевдокод для этого. Код, который вы показываете, говорит о том, что вы создаете файл, называемый организмом .txt. И, эм, вы не используете SaveDialog.

Как вы закодировали это, независимо от того, что пользователь выбрал - независимо от того, сохранить его или нет, программа закончит писать в файл организма. Txt.

Вам необходимо изменить следующее:

if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    MessageBox.Show("You clicked the save button"); 
} 

Просто отрежьте и вставьте петлю и поток туда. Измените organisms.txt на saveFileDialof1.FileName так, чтобы он сохранял его везде, где указывает диалог сохранения. Хотя я действительно не очень понимаю StreamWriter, поэтому помогите мне настроить код.

if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    MessageBox.Show("You clicked the save button"); 

    //create a file and get a streamwriter object 
    outputfile = File.CreateText(saveFileDialog1.FileName); 

    //write the data to the file 
    for (int b = 0; b < listBox1.Items.Count; b++) 
    { 
      outputfile.WriteLine(listBox1.Items[b].ToString()); 
    } 
} 
+0

Это сработало! Большое спасибо. – gingikid

+0

@gingikid Нет проблем! –

0

StreamWriter реализует IDisposable.
Правильное использование будет:

if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    MessageBox.Show("You clicked the save button"); 
    using (StreamWriter outputfile = File.CreateText("organisms.txt")) 
    { 
     for (int b = 0; b < listBox1.Items.Count; b++) 
     { 
      outputfile.WriteLine(listBox1.Items[b].ToString()); 
     } 
    } 
} 
else 
{ 
    MessageBox.Show("You hit the cancel button"); 
} 

Если это все еще не работает:
1) Смотрите, если какие-либо исключения бросают
2) Имейте в виду, что вы не используете файл в диалоговом окне , но «организм.txt», который будет сохранен в рабочем каталоге приложения

Смежные вопросы