所以我創建一個C#記事本,我差不多完成了,但是這是最後一個問題: 我不能保存文件。當我打開一個文件並對其進行修改並嘗試保存時,它給了我一個錯誤,說明該文件已被一個進程使用。我相信這個過程是由我的開放文件方法開始的,但我不確定。我確實有一個方法來保存打開一個保存文件對話框,但我想要一個不需要對話框,只需一個快速保存它,你可能明白我的意思。如何保存此文件?
我打開文件的方法
private void openItem_Click(object sender, EventArgs e)
{
Stream myStream;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
string srtfilename = openFileDialog1.FileName;
string filetext = File.ReadAllText(srtfilename);
GetRichTextBox().Text = filetext;
tabControl1.SelectedTab.Text = Path.GetFileName(openFileDialog1.FileName);
GlobalPath = openFileDialog1.FileName;
}
openFileDialog1.Dispose();
}
我保存文件的方法與對話,這一個工程,但如果我選擇,我已經使用的文件,它崩潰。
private void saveAsItem_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (Stream s = File.Open(saveFileDialog1.FileName, FileMode.Create))
using (StreamWriter sw = new StreamWriter(s))
{ sw.Write(GetRichTextBox().Text); }
tabControl1.SelectedTab.Text = Path.GetFileName(saveFileDialog1.FileName);
saveFileDialog1.Dispose();
}
}
我快速保存文件的方法,則有問題,一個IM。這是我到目前爲止所嘗試過的。
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
string texto, nome, local;
nome = tabControl1.SelectedTab.Text;
texto = GetRichTextBox().Text;
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
NewText();
GetRichTextBox().Text = texto;
tabControl1.SelectedTab.Text = nome;
local = nome + ".txt";
using (StreamWriter sw = new StreamWriter(GlobalPath, true))
{ sw.Write(texto); }
// tabControl1.SelectedTab.Text = Path.GetFileName(saveFileDialog1.FileName);
}
爲什麼你不調試你的應用程序,看看拋出的異常? – Fang
@Fang更容易在這裏發佈一個問題我猜... –
@Fang在這裏拋出的異常並不告訴你擁有的過程是什麼,只有其他東西擁有該文件並自己去找。當然,如果包含使用流打開文件的上下文,該解決方案仍然是可發現的,但僅僅是例外是不夠的。 – Diosjenin