gpt4 book ai didi

c# - SaveFileDialog 事件 FileOk

转载 作者:行者123 更新时间:2023-11-30 20:01:16 25 4
gpt4 key购买 nike

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");
}
}

为什么事件 FileOk 不起作用?

最佳答案

因为您需要在 调用 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);

好处有两个:

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

关于c# - SaveFileDialog 事件 FileOk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com