Загрузить файл из ресурсов в управления richtextbox в WPF-приложения


Я пытаюсь загрузить содержимое файла 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 4

2 ответа:

Я достиг этого довольно простым способом в своем приложении 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-это название моего проекта здесь. Надеюсь, это поможет.

Прежде всего необходимо убедиться, что файл является встроенным ресурсом проекта. Затем убедитесь, что имя ресурса файла-это расположение папки, разделенное точками, начиная с корня проекта. Например, допустим, у меня есть project Test, где папка resources находится в Runtime\Source, тогда я должен задать имя как Test.Во время выполнения.Источник.Ресурсы.Соглашение.формат RTF.

Затем просто вызовите этот метод (он находится в C#, но вы можете преобразовать его), отправьте свое имя, в этом примере "Тест.Во время выполнения.Источник.Ресурсы.Соглашение.rtf " читать Содержание:

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