保存文件对话框事件文件确定
本文关键字:文件 事件 对话框 保存文件 | 更新日期: 2023-09-27 18:34:28
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog Sdialog = new SaveFileDialog();
Sdialog.ShowDialog();
Sdialog.FileOk += Sdialog_FileOk;
}
void Sdialog_FileOk(object sender, CancelEventArgs e)
{
try
{
StreamWriter FileProtocol = new StreamWriter(((SaveFileDialog)sender).FileName);
FileProtocol.Write(textBox3.Text);
FileProtocol.Close();
MessageBox.Show("File is write ok");
}
catch (Exception)
{
MessageBox.Show("Unknown Error. File is not write");
}
}
为什么事件文件正常不起作用?
因为您需要在调用 ShowDialog()
之前挂接事件。当您调用ShowDialog()
时,它会停止在该线程上的处理并等待响应。
所以,取而代之的是:
Sdialog.ShowDialog();
Sdialog.FileOk += Sdialog_FileOk;
这样做:
Sdialog.FileOk += Sdialog_FileOk;
Sdialog.ShowDialog();
要使用DialogResult
来简化工作流程,只需执行以下操作:
if (Sdialog.ShowDialog() == DialogResult.OK)
{
try
{
StreamWriter FileProtocol =
new StreamWriter(Sdialog.FileName);
FileProtocol.Write(textBox3.Text);
FileProtocol.Close();
MessageBox.Show("File is write ok");
}
catch (Exception)
{
MessageBox.Show("Unknown Error. File is not write");
}
}
另外:而不是这样做:
StreamWriter FileProtocol =
new StreamWriter(Sdialog.FileName);
FileProtocol.Write(textBox3.Text);
FileProtocol.Close();
如何将其简化为:
File.AppendAllText(Sdialog.FileName, textBox3.Text);
好处是双重的:
- 代码显然更加简洁,并且;
- 该代码更安全,因为它会为您适当地管理非托管资源。