c# - 关闭保存文件对话框

标签 c# winforms visual-studio-2010

我在关闭 saveFileDialog 时遇到问题。当我点击“取消”窗口时再次出现。这是我的代码:

        private void SaveAsItem_Click(object sender, EventArgs e)
    {
        saveFileDialog1.FileName = "untitled";
        saveFileDialog1.Filter = "Text (*.txt)|*.txt";
        saveFileDialog1.ShowDialog();
        System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(saveFileDialog1.FileName);
        if (saveFileDialog1.ShowDialog()==DialogResult.Cancel)
        {
            richTextBox1.Text = "CANCEL";
            issaved = false;
        }
        else
        {
            issaved = true;
            SaveFile.WriteLine(richTextBox1.Text);
        }
        SaveFile.Close();
    }

最佳答案

您正在调用 saveFileDialog1.ShowDialog() 两次,一次显示它,一次获取结果。你只需要调用一次。单独删除 saveFileDialog1.ShowDialog(); 行,您已经在 if 条件中执行了该操作。

编辑:您还需要将所有 FileStream 操作移到 else block 内,以便在删除该行后它可以正常工作。这是我编辑的版本:

    private void SaveAsItem_Click(object sender, EventArgs e)
{
    saveFileDialog1.FileName = "untitled";
    saveFileDialog1.Filter = "Text (*.txt)|*.txt";
    if (saveFileDialog1.ShowDialog()==DialogResult.Cancel)
    {
        richTextBox1.Text = "CANCEL";
        issaved = false;
    }
    else
    {
        System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(saveFileDialog1.FileName);
        issaved = true;
        SaveFile.WriteLine(richTextBox1.Text);
        SaveFile.Close();
    }
}

您也可以完全跳过 FileStream,只执行 File.WriteAlltext(saveFileDialog1.FileName, richTextBox1.Text)

关于c# - 关闭保存文件对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576295/

相关文章:

javascript - 站点加载时显示弹出窗口一次

c++ - 无论如何让 Visual Studio C++ 自动完成参数列表?

c++ - MFC中如何指定默认选中的Radiobutton?

c# - 如何使用 Spire.PDF 或任何其他库以正确的格式将 pdf 文件读取为文本文件?

c# - 查找 ISymbol 的 SyntaxNode

c# - 如何支持在 Internet Explorer 64 位浏览器中显示 PDF 文件

c# - 将 DLL 合并到程序集或嵌入到资源中 - 哪个更好?

winforms - 是否有工具可以将 C# 1.1 Forms 设计转换为更新的标准?

c++ - std::map 的大小大于调试器中显示的元素数量

c# - 在以排队方式执行 cpu 绑定(bind)作业时避免线程池饥饿的策略