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

.net 将RTF文件从资源加载到WPF应用程序中的RichTextBox,.net,wpf,resources,richtextbox,rtf,.net,Wpf,Resources,Richtextbox,Rtf,我正在尝试加载一个RTF文件的内容,我已经将其放入了资源中(通过Project->Properties->resources->addfile) 我想将Agreement.rtf的内容加载到RichTextBox中,我尝试了以下操作: Dim stream As Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(My.Resources.ResourceManager.GetObject("Agre

我正在尝试加载一个RTF文件的内容,我已经将其放入了资源中(通过
Project->Properties->resources->addfile

我想将
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)

IOpzioni
是我的默认名称空间(我已经仔细检查过了)


似乎什么都不管用。正确的方法是什么

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

我在我的WPF应用程序中以一种简单的方式实现了这一点。请看我的博客:

  • 在WPF项目中,添加一个
    Resources.resx
    文件(如果还没有) (在那里)
  • 在Resources.resx文件中添加
    RTFDoc.rtf
  • 除了您的
    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);
    }
    
    冲浪是我在这里的项目名称。希望这有帮助

    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);
    }