WPF 中RichTextBox控件用法细讲

1. 取得已被选中的内容:
(1)使用RichTextBox.Document.Selection属性
(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Text


2.WPF RictTextBox内容清空方式:txtXml.Document.Blocks.Clear();


3. 从文件中读出纯文本文件后放进RichTextBox或直接将文本放进RichTextBox中:

private void LoadTextFile(RichTextBox richTextBox, string filename)
{
    richTextBox.Document.Blocks.Clear();
    using (StreamReader streamReader = File.OpenText(filename))
    {
        Paragraph paragraph = new Paragraph();
        paragraph.Text = streamReader.ReadToEnd();
        richTextBox.Document.Blocks.Add(paragraph);
    }
}

private void LoadText(RichTextBox richTextBox, string txtContent)
{
    richTextBox.Document.Blocks.Clear();
    Paragraph paragraph = new Paragraph();
    paragraph.Text = txtContent;
    richTextBox.Document.Blocks.Add(paragraph);
}

4. 取得指定RichTextBox的内容:

private string GetText(RichTextBox richTextBox)
{
    TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
    return textRange.Text;
}

5. 将RTF (rich text format)放到RichTextBox中:

private static void LoadRTF(string rtf, RichTextBox richTextBox)
{
    if (string.IsNullOrEmpty(rtf))
    {
        throw new ArgumentNullException();
    }
    TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
    using (MemoryStream rtfMemoryStream = new MemoryStream())
    {
        using (StreamWriter rtfStreamWriter = new StreamWriter(rtfMemoryStream))
        {
            rtfStreamWriter.Write(rtf);
            rtfStreamWriter.Flush();
            rtfMemoryStream.Seek(0, SeekOrigin.Begin);
            //Load the MemoryStream into TextRange ranging from start to end of RichTextBox.
            textRange.Load(rtfMemoryStream, DataFormats.Rtf);
        }
    }
}

6. 将文件中的内容加载为RichTextBox的内容

private static void LoadFile(string filename, RichTextBox richTextBox)
{
    if (string.IsNullOrEmpty(filename))
    {
        throw new ArgumentNullException();
    }
    if (!File.Exists(filename))
    {
        throw new FileNotFoundException();
    }
    using (FileStream stream = File.OpenRead(filename))
    {
        TextRange documentTextRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
        string dataFormat = DataFormats.Text;
        string ext = System.IO.Path.GetExtension(filename);
        if (String.Compare(ext, ".xaml", true) == 0)
        {
            dataFormat = DataFormats.Xaml;
        }
        else if (String.Compare(ext, ".rtf", true) == 0)
        {
            dataFormat = DataFormats.Rtf;
        }
        documentTextRange.Load(stream, dataFormat);
    }
}

7. 将RichTextBox的内容保存为文件:

private static void SaveFile(string filename, RichTextBox richTextBox)
{
    if (string.IsNullOrEmpty(filename))
    {
        throw new ArgumentNullException();
    }
    using (FileStream stream = File.OpenWrite(filename))
    {
        TextRange documentTextRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
        string dataFormat = DataFormats.Text;
        string ext = System.IO.Path.GetExtension(filename);
        if (String.Compare(ext, ".xaml", true) == 0)
        {
            dataFormat = DataFormats.Xaml;
        }
        else if (String.Compare(ext, ".rtf", true) == 0)
        {
            dataFormat = DataFormats.Rtf;
        }
        documentTextRange.Save(stream, dataFormat);
    }
}

读取与写入图片和文本操作::::

读取RichTextBox的内容到string,将字符串保存到数据库的方法就不写了,大家都会

string GetTextByRichBox(RichTextBox box)
{
    MemoryStream s = new MemoryStream();
    TextRange documentTextRange = new TextRange(box.Document.ContentStart, box.Document.ContentEnd);
    documentTextRange.Save(s, DataFormats.XamlPackage);
    return Convert.ToBase64String(s.ToArray());
}

将string的内容转换成图片显示在RichTextBox中

private ShowTextToRichBox(RichTextBox box)
{
    MemoryStream s = new MemoryStream((Convert.FromBase64String(Convert.ToString(dr[“D_DESC”]))));
    TextRange TR = new TextRange(box.Document.ContentStart, box.Document.ContentEnd);
    TR.Load(s, DataFormats.XamlPackage);
}

 

posted @ 2017-01-17 10:56  wzwyc  阅读(13567)  评论(0编辑  收藏  举报