And*_*ija 33 .net c# wpf richtextbox
我有这个RTF文本:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;\red255\green0\blue0;}
\viewkind4\uc1\pard\qc\cf1\fs16 test \b bold \cf2\b0\i italic\cf0\i0\fs17
\par }
Run Code Online (Sandbox Code Playgroud)
如何将此文本设置为WPF RichTextBox?
解:
public void SetRTFText(string text)
{
MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(text));
this.mainRTB.Selection.Load(stream, DataFormats.Rtf);
}
Run Code Online (Sandbox Code Playgroud)
Hen*_*man 41
你真的要用字符串开头吗?
加载RTF的一种方法是:
rtfBox.Selection.Load(myStream, DataFormats.Rtf);
Run Code Online (Sandbox Code Playgroud)
如果要替换现有文本,可以在此之前调用SelectAll().
因此,在最坏的情况下,您必须将您的字符串写入MemoryStream,然后将该流提供给Load()方法.不要忘记介于两者之间的位置= 0.
但我等着看到有人想出更优雅的东西.
创建一个Extension方法
public static void SetRtf(this RichTextBox rtb, string document)
{
var documentBytes = Encoding.UTF8.GetBytes(document);
using (var reader = new MemoryStream(documentBytes))
{
reader.Position = 0;
rtb.SelectAll();
rtb.Selection.Load(reader, DataFormats.Rtf);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以做WinForm风格的风格
richTextBox1.SetRtf(rtf);
| 归档时间: |
|
| 查看次数: |
48947 次 |
| 最近记录: |