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

时间:2016-12-30 22:02:15

标签: c# winforms openfiledialog

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

当我在文本编辑器中编写/保存/加载文件时,它们工作正常。但是每当我在不同的编辑器中编写文件/从某个地方从Internet下载文本文件时,文件都无法加载。

当我加载文件时,我得到了

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

当我看“查看详细信息”时说

"File format is not valid."

即使文件中有文本(在不同的文本编辑器中查看),文本属性也没有,因为文件格式不正确。

我很困惑为什么它会加载文本编辑器本身(具有相同的扩展名)而不是来自其他地方的文件。我真的不确定如何开始调试这个。我的保存文件/打开文件方法如下所示。

打开文件

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

非常感谢帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

决定它的类型不仅仅是文件的扩展名。此版本的方法允许加载“常规”RTF文件和ASCII文件。

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