WPF RICHTEXTBOX 和数据库读写图文的方法。

  • Post author:
  • Post category:其他


做一个项目,需要图文一起存入数据库,在网上浏览了很久。终于实现了在RICHTEXTBOX里面和数据库读写图文的方法。

存入数据库。

public string toxaml()

{


// Stream s = new MemoryStream();  // 其他的什么Stream类型都没问题

XamlWriter.Save(

MemoryStream s=new MemoryStream();

TextRange documentTextRange = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);

documentTextRange.Save(s, DataFormats.XamlPackage);

return Convert.ToBase64String(s.ToArray());

//return Convert.ToString(s.ToArray());

}

然后存入数据库。

注意不能用//return Convert.ToString(s.ToArray());不知道什么原因。用这句存入数据库是SYSTEM..BYTE[] ?

读取数据库

TextRange tr = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);

convert string to MemoryStream

//MemoryStream ms = GetMemoryStreamFromString(buffer);

//tr.Load(ms, DataFormats.XamlPackage);

MemoryStream s = new MemoryStream((Convert.FromBase64String(buffer)));

//   XmlReader xr = XmlReader.Create(s);

//FlowDocument fd = XamlReader.Load(xr) as FlowDocument;

//this.richTextBox1.Document = fd;

TextRange TR = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);

TR.Load(s, DataFormats.XamlPackage);

Xaml文件有两种,一种是保存图片的地址的Xaml,另外一种是直接保存图片的XamlPackage。使用直接保存图片的模式,这样图片是以二进制的形式存在Xaml文件中的,读取后就不会有问题了。另外读取时使用的是TextRange.Load,格式选择就是XamlPackage。读取Xaml也没有问题,还可以读Rtf和Text文件。XamlReader不适合用来读取FlowDocument的内容。



版权声明:本文为thebesttome原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。