2016-12-30 1 views
0

나는 C#을 배우고 텍스트 편집기 자습서를 거쳤습니다. 최종 결과는 이해할 수없는 이상한 일이 있다는 것을 제외하고는 꽤 잘 작동합니다.로드 할 때 C# LoadFile 처리되지 않은 예외를 throw .txt, .rtf

텍스트 편집기에서 파일을 모두 작성/저장 /로드 할 때 제대로 작동합니다. 하지만 다른 편집기에서 파일을 쓰거나 어딘가에서 인터넷에서 텍스트 파일을 다운로드 할 때마다 파일이로드되지 않습니다.

내가 파일을로드 할 때, 나는

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

를 얻을 내가 볼 때 "자세히보기"입니다 말한다

A의 볼 때 텍스트 (파일에있다하더라도
"File format is not valid." 

다른 텍스트 편집기)를 사용하면 text 속성에 아무 것도 없기 때문에 파일 형식이 잘못되었습니다.

텍스트 편집기 자체에서 (동일한 확장명으로) 만든 파일을로드하지만 다른 곳에서는로드하지 않는 이유가 꽤 혼란 스럽습니다. 이 디버깅을 시작하는 방법을 잘 모르겠습니다. 내 저장 파일/열린 파일 방법은 다음과 같습니다.

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.RichText 대신 RichTextBoxStreamType.PlainText을 사용해야 할 수도 있습니다.

+0

고마워요! – spaderdabomb