Load TextRange from File stream : TextRange « Windows Presentation Foundation « C# / CSharp Tutorial






using Microsoft.Win32;
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;

    public class MainClass : Window
    {
        RichTextBox txtbox = new RichTextBox();
        [STAThread]
        public static void Main()
        {
            Application app = new Application();
            app.Run(new MainClass());
        }
        public MainClass()
        {
            txtbox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            Content = txtbox;
            txtbox.Focus();
        }
        protected override void OnPreviewTextInput(TextCompositionEventArgs args)
        {
            if (args.ControlText.Length > 0 && args.ControlText[0] == '\x0F')
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.CheckFileExists = true;
                dlg.Filter = "Document Files(*.xaml)|*.xaml|All files (*.*)|*.*";

                if ((bool)dlg.ShowDialog(this))
                {
                    FlowDocument flow = txtbox.Document;
                    TextRange range = new TextRange(flow.ContentStart, flow.ContentEnd);
                    Stream strm = null;
                    try
                    {
                        strm = new FileStream(dlg.FileName, FileMode.Open);
                        range.Load(strm, DataFormats.Xaml);
                    }catch (Exception exc) {
                        MessageBox.Show(exc.Message, Title);
                    }finally{
                        if (strm != null)
                            strm.Close();
                    }
                }
                args.Handled = true;
            }
            base.OnPreviewTextInput(args);
        }
    }








24.11.TextRange
24.11.1.Clear any formatting applied to the text with TextRange.ClearAllProperties();Clear any formatting applied to the text with TextRange.ClearAllProperties();
24.11.2.Create Run from String, Add Run to TextBlock
24.11.3.Listen to mouse down event for Run
24.11.4.Load TextRange from File stream
24.11.5.Save TextRange to file stream