Загрузить файл из ресурсов в управления 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 ответа:
Я достиг этого довольно простым способом в своем приложении WPF. Смотрите мой блог здесь: http://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html
- в ваших проектах WPF добавьте файл
Resources.resx
(если он еще не создан там)- добавьте ваш
RTFDoc.rtf
в ваши ресурсы.resx файл- вместе с вашим файлом
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(); }