How to: Save, Load, and Print RichTextBox Content
.NET Framework 4.5
The following example shows how to save content of a RichTextBox to a file, load that content back into the RichTextBox, and print the contents.
Below is the markup for the example.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.SaveLoadPrintRTB" > <StackPanel> <RichTextBox Name="richTB"> <FlowDocument> <Paragraph> <Run>Paragraph 1</Run> </Paragraph> </FlowDocument> </RichTextBox> <Button Click="SaveRTBContent">Save RTB Content</Button> <Button Click="LoadRTBContent">Load RTB Content</Button> <Button Click="PrintRTBContent">Print RTB Content</Button> </StackPanel> </Page>
Below is the code behind for the example.
using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Media; namespace SDKSample { public partial class SaveLoadPrintRTB : Page { // Handle "Save RichTextBox Content" button click. void SaveRTBContent(Object sender, RoutedEventArgs args) { // Send an arbitrary URL and file name string specifying // the location to save the XAML in. SaveXamlPackage("C:\\test.xaml"); } // Handle "Load RichTextBox Content" button click. void LoadRTBContent(Object sender, RoutedEventArgs args) { // Send URL string specifying what file to retrieve XAML // from to load into the RichTextBox. LoadXamlPackage("C:\\test.xaml"); } // Handle "Print RichTextBox Content" button click. void PrintRTBContent(Object sender, RoutedEventArgs args) { PrintCommand(); } // Save XAML in RichTextBox to a file specified by _fileName void SaveXamlPackage(string _fileName) { TextRange range; FileStream fStream; range = new TextRange(richTB.Document.ContentStart, richTB.Document.ContentEnd); fStream = new FileStream(_fileName, FileMode.Create); range.Save(fStream, DataFormats.XamlPackage); fStream.Close(); } // Load XAML into RichTextBox from a file specified by _fileName void LoadXamlPackage(string _fileName) { TextRange range; FileStream fStream; if (File.Exists(_fileName)) { range = new TextRange(richTB.Document.ContentStart, richTB.Document.ContentEnd); fStream = new FileStream(_fileName, FileMode.OpenOrCreate); range.Load(fStream, DataFormats.XamlPackage); fStream.Close(); } } // Print RichTextBox content private void PrintCommand() { PrintDialog pd = new PrintDialog(); if ((pd.ShowDialog() == true)) { //use either one of the below pd.PrintVisual(richTB as Visual, "printing as visual"); pd.PrintDocument((((IDocumentPaginatorSource)richTB.Document).DocumentPaginator), "printing as paginator"); } } } }