2011-12-20 91 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(); 
    } 
相關問題