Загрузить файл RTF из ресурсов в RichTextBox в приложении WPF - PullRequest
5 голосов
/ 20 декабря 2011

Я пытаюсь загрузить содержимое файла RTF, который я поместил в ресурсы (через Project->Properties->Resources->Add File).

Я хочу загрузить содержимое Agreement.rtf в RichTextBox, и я попробовал следующее:

Dim stream As Stream
stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(My.Resources.ResourceManager.GetObject("Agreement").GetType(), "IOpzioni.Agreement.rtf")
RichTextBox1.SelectAll()

RichTextBox1.Selection.Load(stream, DataFormats.Rtf)

также

   stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(My.Resources.Agreement.GetType(), "IOpzioni.Agreement.rtf")

IOpzioni - мое пространство имен по умолчанию (я дважды это проверил).

Кажется, ничего не работает. Как правильно это сделать?

Ответы [ 2 ]

6 голосов
/ 24 марта 2014

Я добился этого несколько простым способом в своем приложении WPF.Смотрите мой блог здесь: http://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html

  1. В своих проектах WPF добавьте файл Resources.resx (если его там еще нет)
  2. Добавьте свой RTFDoc.rtf в свои ресурсы.файл resx
  3. Наряду с вашим файлом Resources.resx, за файлом будет находиться код: Resources.Designer.cs.Откройте его и скопируйте его пространство имен и имя класса.В моем случае это Surf.Resources.Resource1

. Я использовал это для загрузки ресурса RTF в свой элемент управления WPF RichTextBox.Вот строки из кода:

using Surf.Resources;

void Surface_Loaded(object sender, RoutedEventArgs e)
{             
    var stream = new MemoryStream(Encoding.Unicode.GetBytes(Resource1.RTFDoc));
    RichTextBox1.Selection.Load(stream, DataFormats.Rtf);
}

Surf - это название моего проекта.Надеюсь, это поможет.

0 голосов
/ 20 декабря 2011

Прежде всего, убедитесь, что файл является встроенным ресурсом проекта.Затем убедитесь, что имя ресурса файла - это местоположение папки, разделенное точкой, начиная с корня проекта.Например, допустим, у меня есть проект Test, в котором папка ресурсов находится в папке Runtime \ Source, тогда я должен установить имя как Test.Runtime.Source.Resources.Agreement.rtf.

Затем просто вызвать этот метод (это в C #, но вы можете преобразовать его), отправьте свое имя, в этом примере «Test.Runtime.Source.Resources.Agreement.rtf», чтобы прочитать содержимое:

  public static string GetResourceByName(string resource)
  {
     Assembly assembly = Assembly.GetExecutingAssembly();
     StreamReader reader = new StreamReader(assembly.GetManifestResourceStream(resource));
     return reader.ReadToEnd();
  }
...