none
ошибка ArgumentException RRS feed

  • Вопрос

  • Добрый день, я создал небольшой текстовый редактор для rtf и txt файлов, мой вопрос состоит в том что при загрузке rtf файла с помошью данного когда : 

                        if (Path.GetExtension(openFileDialog1.FileName) == ".txt")
                        {
                            richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);
                           
                        }
                        if (Path.GetExtension(openFileDialog1.FileName) == ".rtf")
                        {
                            richTextBox1.LoadFile(openFileDialog1.FileName);
                        }

    на строке  richTextBox1.LoadFile(openFileDialog1.FileName) высвечитвается ошбика ArgumentException was unhandled (недопустимый формат файла), причем созданные rtf файлы с помошью стороних программ открывает без проблемм , что касается моего приложения ,когда я просто сохраняю как rtf файл,из пустого или заполненого тестом richTextBox  с помошью кода        

                      if (Form2.far == ".txt")
                        {
                        richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);
                        }
                        else
                        {
                            richTextBox1.SaveFile(saveFileDialog1.FileName);                   
                        }

    потом этот rtf фаил открываю тоже все хорошо, но когда я просто создаю его (код создания)

    opa = Form1.folderBrowserDialog1.SelectedPath + "\\" + textBox1.Text + comboBox1.SelectedItem;

    в textBox1.Text содержится имя создаваемого файла, а в comboBox1.SelectedItem  содержится выбранное расширение файла.

    System.IO.File.Create(opa,);

     

    Потом при открытие этого rtf файла проиходит данная ошибика, которую я описал выше

    мне кажится что ошибка именно в созданние rtf файла,

    заранее спасибо за ответы.

    19 декабря 2010 г. 11:23

Ответы

  • Метод LoadFile(string) ожидает, что загружаемый файл будет RTF-документом. Если файл не является RTF-документом - то будет вызвано исключение ArgumentException.

    Вы создаете с помощью System.IO.File.Create(opa); просто пустой файл, он не является валидным rft файлом, поэтому вы получаете исключение.

    Правильный RTF-документ должен состоять из группы, начинающейся с управляющего кода \rtf. (Rich Text Format)

    Т.е. вам нужно не просто создать пустой файл, но и записать туда данные: {\rtf}

          using (StreamWriter sw = new StreamWriter(@"C:\test.rtf"))
          {
            sw.Write(@"{\rtf}");
          }
    


    Для связи [mail]
    • Предложено в качестве ответа PashaPash 20 декабря 2010 г. 5:06
    • Помечено в качестве ответа Abolmasov Dmitry 20 декабря 2010 г. 5:59
    19 декабря 2010 г. 12:50

Все ответы

  • Метод LoadFile(string) ожидает, что загружаемый файл будет RTF-документом. Если файл не является RTF-документом - то будет вызвано исключение ArgumentException.

    Вы создаете с помощью System.IO.File.Create(opa); просто пустой файл, он не является валидным rft файлом, поэтому вы получаете исключение.

    Правильный RTF-документ должен состоять из группы, начинающейся с управляющего кода \rtf. (Rich Text Format)

    Т.е. вам нужно не просто создать пустой файл, но и записать туда данные: {\rtf}

          using (StreamWriter sw = new StreamWriter(@"C:\test.rtf"))
          {
            sw.Write(@"{\rtf}");
          }
    


    Для связи [mail]
    • Предложено в качестве ответа PashaPash 20 декабря 2010 г. 5:06
    • Помечено в качестве ответа Abolmasov Dmitry 20 декабря 2010 г. 5:59
    19 декабря 2010 г. 12:50
  • Спасибо огромное, исправил все работает.
    19 декабря 2010 г. 22:54