2011-12-20 90 views
4

我试图加载一个RTF文件的内容,该文件放在资源内(通过Project->Properties->Resources->Add File)。将资源中的RTF文件加载到WPF应用程序中的RichTextBox

我想加载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是我的默认命名空间(我有双重检查这一点)。

似乎没有任何工作。什么是正确的方法来做到这一点?

回答

4

我在我的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); 
} 

冲浪是我的项目名称在这里。希望这可以帮助。

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(); 
    } 
相关问题