У меня возникла проблема с SaveFileDialog по некоторым причинам. Все, что я хочу сделать, это извлечь данные из текстового поля построчно и записать их в текстовый файл, а затем сохранить этот текстовый файл на рабочем столе. Первый фрагмент кода работает нормально (хотя и не сохраняется на рабочем столе). Второй фрагмент кода - это то, что я хочу использовать, но когда он создает текстовый файл, текстовый файл становится пустым. Что я сделал не так во втором бите кода?
Этот код работает, но он не сохраняется на рабочем столе и не так хорош, как второй код.
//When the Save button is clicked the contents of the text box will be written to a text file.
private void saveButton_Click(object sender, EventArgs e)
{
int textBoxLines = textBox.Lines.Count();
if (File.Exists(saveFile))
{
result = MessageBox.Show("The file " + saveFile + " already exists.\r\nDo you want to replace it?", "File Already Exists!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
TextWriter tw1 = new StreamWriter(saveFile);
for (int i = 0; i < textBoxLines; i++)
{
tw1.WriteLine(textBox.Lines.GetValue(i));
}
tw1.Close();
}
if (result == DialogResult.No)
{
MessageBox.Show("Please move or rename existing " + saveFile + "\r\nBefore attempting to save again.", "Message");
}
}
else
{
TextWriter tw2 = new StreamWriter(saveFile);
for (int i = 0; i < textBoxLines; i++)
{
tw2.WriteLine(textBox.Lines.GetValue(i));
}
tw2.Close();
}
}
Этот код не работает, но это то, что я хочу использовать.
//When the Save button is clicked the contents of the text box will be written to a text file.
private void saveButton_Click(object sender, EventArgs e)
{
int textBoxLines = textBox.Lines.Count();
Stream saveStream;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveDialog.FilterIndex = 2;
saveDialog.RestoreDirectory = true;
saveDialog.FileName = (saveFile);
saveDialog.InitialDirectory = (Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
if (saveDialog.ShowDialog() == DialogResult.OK)
{
if ((saveStream = saveDialog.OpenFile()) != null)
{
StreamWriter tw = new StreamWriter(saveStream);
for (int i = 0; i < textBoxLines; i++)
{
tw.WriteLine(textBox.Lines.GetValue(i));
}
saveStream.Close();
}
}
}