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