C# SaveFileDialog事件FileOk
为什么事件文件OK不起作用?因为在调用C# SaveFileDialog事件FileOk,c#,.net,winforms,C#,.net,Winforms,为什么事件文件OK不起作用?因为在调用ShowDialog()之前需要将事件连接起来。调用ShowDialog()时,它会停止该线程上的处理,并等待响应 因此,与此相反: private void button2_Click(object sender, EventArgs e) { SaveFileDialog Sdialog = new SaveFileDialog(); Sdialog.ShowDialog(); Sdialog.FileOk +
ShowDialog()
之前需要将事件连接起来。调用ShowDialog()
时,它会停止该线程上的处理,并等待响应
因此,与此相反:
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");
}
}
这样做:
Sdialog.ShowDialog();
Sdialog.FileOk += Sdialog_FileOk;
要使用
对话框result
简化您的工作流程,只需执行以下操作:
Sdialog.FileOk += Sdialog_FileOk;
Sdialog.ShowDialog();
另外:不要这样做:
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();
好处有两方面:
- 代码显然要简洁得多,而且李>
- 代码更安全,因为它可以为您适当地管理未管理的资源
消息框
。只要做你的工作。另一方面,如果ShowDialog
的DialogResult
是DialogResult,您只需从SaveFileDialog
抓取文件名即可。好的
@mega7star,请查看我的编辑,向您展示如何利用ShowDialog()的结果。
File.AppendAllText(Sdialog.FileName, textBox3.Text);