質問

WPF RichTextBoxを使用して、データベースからbyte []としてフロードキュメントを保存しました。次に、このデータを取得して、RichTextBoxにrtfとして表示する必要があります。 TextRangeを使用して、またはXAMLReaderでbyte []を変換しようとすると、FlowDocumentが返されますが、レポートRichTextBoxはrtfのみを取得するため、rtf文字列に変換するにはどうすればよいですか。

ありがとう

アービンド

役に立ちましたか?

解決

FlowDocumentは、実際のドキュメントコンテンツではなく、ドキュメントのランタイム表現と見なされるため、直接永続化しないでください。代わりに、 TextRangeクラスを使用して、< a href = "http://msdn.microsoft.com/en-us/library/system.windows.dataformats.rtf.aspx" rel = "noreferrer"> Rtf 。

選択範囲を作成してストリームに保存する方法の簡単なサンプル:

var content = new TextRange(doc.ContentStart, doc.ContentEnd);

if (content.CanSave(DataFormats.Rtf))
{
    using (var stream = new MemoryStream())
    {
        content.Save(stream, DataFormats.Rtf);
    }
}

選択にコンテンツをロードすることも同様です:

var content = new TextRange(doc.ContentStart, doc.ContentEnd);

if (content.CanLoad(DataFormats.Rtf))
{
    content.Load(stream, DataFormats.Rtf);
}

他のヒント

これは私にとって魅力的です。結果を問題なくRTFボックスに表示します。

public static string getDocumentAsXaml(IDocumentPaginatorSource flowDocument)
{
     return XamlWriter.Save(flowDocument);
}
    Using conn As New System.Data.SqlClient.SqlConnection(connectionSTRING)
       Dim adapter As New System.Data.SqlClient.SqlDataAdapter(selectSTRING, conn)
       Dim DS As System.Data.DataSet = New System.Data.DataSet
       adapter.Fill(DS)

       Dim ba() As Byte = Text.Encoding.ASCII.GetBytes(DS.Tables(0).Rows(0)("RTF_Field").ToString())

       Dim ms As MemoryStream = New MemoryStream(ba)
       Dim fd As FlowDocument = New FlowDocument
       Dim tr As TextRange = New TextRange(fd.ContentStart, fd.ContentEnd)
       tr.Load(ms, System.Windows.DataFormats.Rtf)
       ms.Close()

            RichTextBox.Document = fd

        End Using

接続文字列を使用する必要があります&amp; SQL selectステートメント...それ以外は、これです...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top