2016-12-30 107 views
0

我正在學習C#,並通過文本編輯器教程。最後的結果非常好,除了有些奇怪的事情我不明白。C#LoadFile拋出未處理的異常時,加載.txt,.rtf

當我在文本編輯器中寫入/保存/加載文件時,它們都能正常工作。但是,無論何時我在其他編輯器中寫入文件/從某處下載文本文件時,該文件都無法加載。

當我加載文件,我得到

"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

我懷疑你的文本編輯器是期待和保存富文本格式(* .RTF)文件,而其他文本編輯器和下載的文件是純文本* .TXT –

+0

我試過保存兩個* .RTF文件和* .TXT文件從文本編輯器,並重新加載它們 - 他們都很好。我也試過了不同的文本編輯器的兩種文件類型,並且都沒有工作 – spaderdabomb

+0

GetCurrentDocument返回什麼?既然你說'LoadFile'會拋出一個異常,請告訴我們你正在談論哪個特定的'LoadFile'方法。 –

回答

1

這不僅僅是文件的擴展名,它決定了它的類型。該版本的方法允許加載「常規」RTF文件和ASCII文件。

RichTextBoxStreamType Enumeration提供了幾種不同的可能性。如果您嘗試加載使用其他編輯器創建的文件,則可能需要使用RichTextBoxStreamType.PlainText而不是RichTextBoxStreamType.RichText

+0

謝謝你做到了! – spaderdabomb

相關問題