C# LoadFile 在加载 .txt、.rtf 时抛出未处理的异常

C# LoadFile throwing unhandled exception when loading .txt, .rtf

我正在学习 C# 并学习了文本编辑器教程。最终结果非常好,除了发生了一些我不明白的奇怪事情。

当我 write/save/load 文件都在文本编辑器中时,它们工作正常。但是每当我在不同的 editor/download 文本文件中写入来自互联网某处的文本文件时,该文件就无法加载。

当我加载文件时,我得到

"An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll"

当我看到 "View Details" 时说

"File format is not valid."

即使文件中有文本(在不同的文本编辑器中查看时),文本 属性 中什么也没有,这是文件格式不正确的结果。

我很困惑为什么它会加载在文本编辑器本身(具有相同的扩展名)而不是从其他地方创建的文件。我真的不确定如何开始调试这个。下面列出了我保存 file/open 文件的方法。

打开文件

private void Open()
{
    openFileDialog1.Filter = "RTF|*.rtf|Text Files|*.txt|VB Files|*.vb|C# Files|*.cs|All Files|*.*";

    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK && openFileDialog1.FileName.Length > 0)
    {
        GetCurrentDocument.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.RichText);
    }
}

保存文件

private void Save()
{
    saveFileDialog1.FileName = tabControl1.SelectedTab.Name;
    saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    saveFileDialog1.Filter = "RTF|.rtf";
    saveFileDialog1.Title = "Save";

    if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        if (saveFileDialog1.FileName.Length > 0)
        {
            GetCurrentDocument.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
        }
    }
}

不胜感激,谢谢!

不仅仅是文件的扩展名决定了它的类型。此版本的方法允许加载 "regular" RTF 文件和 ASCII 文件。

RichTextBoxStreamType Enumeration 提供了几种不同的可能性。如果您尝试加载使用不同编辑器创建的文件,您可能需要使用 RichTextBoxStreamType.PlainText 而不是 RichTextBoxStreamType.RichText