2016-12-30 7 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." 

Даже если есть текст в файле (если смотреть в другой текстовый редактор), свойство text ничего не имеет в нем, в результате неправильный формат файла.

Я довольно смущен, почему он будет загружать файлы, сделанные в самом текстовом редакторе (с тем же расширением), но не из другого места. Я действительно не уверен, как начать отладку этого. Мои методы сохранения файла/открытого файла перечислены ниже.

Open File

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

Я подозреваю, что текстовый редактор ожидает и сохраняет файлы формата Rich Text (* .RTF), тогда как другие текстовые редакторы и файлы, которые вы загружаете, являются простым текстом * .TXT –

+0

Я попытался сохранить как файлы * .RTF, так и * .TXT файлов из текстового редактора и их перезагрузки - они оба работают нормально. Я также пытался использовать оба типа файлов из разных текстовых редакторов, и ни один из них не работает – spaderdabomb

+0

Что возвращает 'GetCurrentDocument'? Поскольку вы говорите, что 'LoadFile' генерирует исключение, сообщите нам, какой именно метод LoadFile вы говорите. –

ответ

1

Это не просто расширение файла, определяющего его тип. Эта версия метода позволяет загружать как «обычные» RTF-файлы, так и ASCII файлов.

RichTextBoxStreamType Enumeration предоставляет несколько различных возможностей. Если вы пытаетесь загрузить файл, созданный с помощью другого редактора, вам может потребоваться использовать RichTextBoxStreamType.PlainText вместо RichTextBoxStreamType.RichText.

+0

Спасибо, что сделал! – spaderdabomb