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
。
我正在学习 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
。