由于某种原因,我遇到了SaveFileDialog问题。我想要做的就是从文本框中逐行提取数据并将其写入文本文件,然后将该文本文件保存到桌面。第一部分代码工作正常(尽管它不保存到桌面)。代码的第二位是我想要使用的,但是当它创建文本文件时,文本文件是空的。我在第二部分代码中做了什么错误?SaveFileDialog问题(C#)(VS2008)
此代码有效,但不会保存到桌面,并且不如第二个代码。
//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();
}
}
}
谢谢你,现在很好。我在这里使用的代码: http://zamov.online.fr/EXHTML/CSharp/CSharp_302155.html 它没有StreamWriter.Close(),我认为只是关闭流就足够了。我还注意到,当我第一次将我的tw.Close()放到第一次崩溃时,因为在关闭流之后关闭了它,但是当我在saveStream.Close()之前放置tw.Close()时,一切正常。它为什么第一次崩溃? – ubiquibacon 2010-04-28 20:42:09
@typoknig - 当它坠毁时,你会得到什么错误? – ChrisF 2010-04-28 20:43:45
'使用'块会在这里节省很多麻烦。 – Powerlord 2010-04-28 20:48:44