首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SaveFileDialog事件FileOk

SaveFileDialog事件FileOk
EN

Stack Overflow用户
提问于 2013-10-07 18:49:46
回答 1查看 4.9K关注 0票数 2
代码语言:javascript
复制
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不能工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-07 18:50:27

因为您需要在调用ShowDialog()之前将事件连接起来。当您调用ShowDialog()时,将停止该线程上的处理,而则等待响应。

所以,代替这个:

代码语言:javascript
复制
Sdialog.ShowDialog();
Sdialog.FileOk += Sdialog_FileOk;

这样做:

代码语言:javascript
复制
Sdialog.FileOk += Sdialog_FileOk;
Sdialog.ShowDialog();

要使用DialogResult简化您的工作流程,只需执行以下操作:

代码语言:javascript
复制
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");
    }
}

还:,而不是这样做的:

代码语言:javascript
复制
StreamWriter FileProtocol =
    new StreamWriter(Sdialog.FileName);
FileProtocol.Write(textBox3.Text);
FileProtocol.Close();

不如把它简化成这样:

代码语言:javascript
复制
File.AppendAllText(Sdialog.FileName, textBox3.Text);

好处有两倍:

  • 代码显然要简洁得多;
  • 代码更安全,因为它为您适当地管理非托管资源。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19232331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档