winform的RichTextBox控件追加文本及图片(实现笔记录入和笔记搜索功能)

      在工作中,在工作中,难免有一些笔记要记录下来,方便后续工作中快速找到。之前用的是共享文档来记录的,但有一个缺点就是随着写的内容越来越多,打开变得很慢,搜索更加慢,网络不好的时候,几分钟都没找到自己想要的内容。所以很久之前自己就利用winform写了一个实现笔记录入和笔记查询的功能的程序,自己在工作中也用了一年多。但有个很明显的缺点就是不能录入图片。很久之前就了解到winform的RichTextBox控件就可以录入富文本,像word一样。趁着今天有空,就把这个坑给补上,先看一下最终的效果:

测试环境:

vistual  studio  2017

.net framework  4.6.1

SQLite数据库(本地数据库,无需安装,拷贝过去即可使用,实现存储数据及搜索功能)

本文不打算写这个笔记编辑器是怎么实现的,本文的目标如下:

1  获取RichTextBox的内容,并转化为字符串(方便后续保存到数据库中)

2  从数据库中查询出多条笔记内容,并同时显示到一个RichTextBox控件上

一   获取RichTextBox的内容并转化为字符串存储

这就利用到RichTextBox的SaveFile方法

 public static string GetRichTextBoxContext(RichTextBox richTextBox){MemoryStream ms = new MemoryStream();ms.Position = 0;//把当前的richtextbox内容包括图片和文本保存到流中  richTextBox.SaveFile(ms, RichTextBoxStreamType.RichText);byte[] buffer = ms.GetBuffer();ms.Close();return Encoding.UTF8.GetString(buffer);}

二  获取多条笔记信息并同时显示到一个RichTextBox上

由于每一条笔记信息都同时包含有文字及图片,所以利用到RichTextBox的追加文本功能及追加图片的功能。

2.1  把一条笔记的内容转化为MemoryStream供RichTextBox使用

 public  MemoryStream ConvertByteArrayToStrem(string richTextBoxContext){byte[] richTextBuffer = Encoding.UTF8.GetBytes(richTextBoxContext);MemoryStream ms = new MemoryStream();ms.Position = 0;ms.Write(richTextBuffer, 0, richTextBuffer.Length);ms.Position = 0;return ms;}

2.2 把内容展示到RichTextBox上

WorkQueryDataModel实体代码如下:

public class WorkQueryDataModel
{/// /// 主键Id/// public int Id;/// /// 关键字/// public string keyWord;/// /// 内容/// public string content;/// /// 查询次数/// public int queryNumber;
}

展示的内容如下:

 private void ShowContext(WorkQueryDataModel[]contextArray){if (contextArray == null || contextArray.Length == 0) return;foreach (var item in contextArray){this.rtInput.AppendText("\r\n关键词:\r\n" + "   " + item.keyWord + "(匹配次数:" + item.queryNumber + ")" + " 主键Id(" + item.Id + ")" + "\r\n");if (item.content != null && item.content.Length > 0){MemoryStream richTextStream = null;try{richTextStream = ConvertByteArrayToStrem(item.content);RichTextBox richTextBox = new RichTextBox();richTextBox.LoadFile(richTextStream, RichTextBoxStreamType.RichText);richTextStream.Close();this.rtInput.SelectedRtf = richTextBox.Rtf;}catch (Exception ex){this.rtInput.AppendText("\r\n详细错误信息:\r\n" + "   " + ex.Message+ex.StackTrace + "\r\n\r\n\r\n");if (richTextStream != null){richTextStream.Close();}}}}}

上述代码中的rtInput是RichTextBox控件

追加文本使用了RichText的AppendText方法,用于显示这个笔记内容的匹配次数等信息

最加一个笔记的富文本,先new了一个空的RichTextBox(richTextBox),然后把文本加载进MemoryStream,new出来的richTextBox通过LoadFile方法把内容加载进RichTextBox控件,最后通过目标RichText(rtInput)的SelectedRtf属性值 this.rtInput.SelectedRtf = richTextBox.Rtf完成富文本的追加工作。

好了,本文到此结束。

笔记编辑器的源码(写得有点Low,勿喷):

https://download.csdn.net/download/zxy13826134783/87858774


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部