保存文件对话框事件文件确定

本文关键字:文件 事件 对话框 保存文件 | 更新日期: 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);

好处是双重的:

  • 代码显然更加简洁,并且;
  • 该代码更安全,因为它会为您适当地管理非托管资源。