我正在尝试加载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
是我的默认命名空间(我已仔细检查过)。
似乎没什么用。这样做的正确方法是什么?
答案 0 :(得分:5)
我在WPF应用程序中以一种简单的方式实现了这一点。在这里看我的博客: http://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html
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);
}
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();
}