在WPF应用程序中,从资源中加载一个RTF文件到RichTextBox中

6

我正在尝试加载一个RTF文件的内容,该文件已经被放置在资源中(通过项目->属性->资源->添加文件)。

我想要将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个回答

7
我在我的WPF应用程序中以一种相对简单的方式实现了这一点。请查看我的博客: http://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html
  1. 在你的WPF项目中,添加一个Resources.resx文件(如果还没有)
  2. 将你的RTFDoc.rtf添加到你的Resources.resx文件中
  3. 除了你的Resources.resx文件外,还有一个代码后备文件:Resources.Designer.cs。打开它并复制其命名空间和类名。在我的情况下,它是 Surf.Resources.Resource1
我使用这个方法来在我的WPF RichTextBox控件中加载RTF资源。以下是来自代码后备的行:
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

首先确保文件是项目的嵌入式资源。然后确保文件的资源名称是文件夹位置,点分隔,从项目根目录开始。例如,假设我有一个名为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();
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接