2011-12-20 7 views
4

リソース内に入れたRTFファイルの内容をロードしようとしています(Project->Properties->Resources->Add File経由)。リソースからRTFファイルをWPFアプリケーションのRichTextBoxにロード

私はRichTextBoxからAgreement.rtfのコンテンツをロードすると、私は次のことを試してみました:

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アプリケーションでやや簡単な方法で実現しました。ここに私のブログを参照してください。(それは既に存在 ない場合) あなたのWPFのプロジェクトでhttp://devdare.blogspot.com/2014/03/wpf-loading-rtf-document-in-richtextbox.html

  1. は、あなたのResources.resxに
  2. はあなたのResources.resxファイルと一緒に
  3. を提出あなたのRTFDoc.rtfを追加Resources.resxファイルを追加ファイルの後ろにコード:Resources.Designer.csがあります。それを開き、名前空間とクラス名をコピーします。私の場合、それは私が私のWPF RichTextBox制御でRTFリソースをロードするためにこれを使用Surf.Resources.Resource1

です。コードの背後にある行は次のとおりです。

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

最初に、ファイルがプロジェクトの埋め込みリソースであることを確認します。次に、ファイルのリソース名がプロジェクトのルートから始まるフォルダの場所であることを確認します。たとえば、リソースフォルダがRuntime \ Sourceの下にあるProject Testを持っていれば、その名前をTest.Runtime.Source.Resources.Agreement.rtfとして設定する必要があります。

それからちょうど内容を読み取るために、「Test.Runtime.Source.Resources.Agreement.rtf」この例では、自分の名前を送って、(それはC#でありますが、あなたはそれを変換することができます)このメソッドを呼び出します。

public static string GetResourceByName(string resource) 
    { 
    Assembly assembly = Assembly.GetExecutingAssembly(); 
    StreamReader reader = new StreamReader(assembly.GetManifestResourceStream(resource)); 
    return reader.ReadToEnd(); 
    } 
関連する問題