将资源中的RTF文件加载到WPF应用程序中的RichTextBox

时间:2011-12-20 12:56:06

标签: .net wpf resources richtextbox rtf

我正在尝试加载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 个答案:

答案 0 :(得分:5)

我在WPF应用程序中以一种简单的方式实现了这一点。在这里看我的博客: http://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html

  1. 在您的WPF项目中,添加Resources.resx文件(如果尚未添加) 有)
  2. 在Resources.resx文件中添加RTFDoc.rtf
  3. Resources.resx文件一起,文件后面会有代码:Resources.Designer.cs。打开它并复制其名称空间和类名。就我而言,它是Surf.Resources.Resource1
  4. 我用它在我的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是我的项目名称。希望这会有所帮助。

答案 1 :(得分:0)

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