前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Winfrom RichTextBox中实现图文并存

如何在Winfrom RichTextBox中实现图文并存

原创
作者头像
谭广健
发布2024-05-09 10:59:40
720
发布2024-05-09 10:59:40
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

基于C/S 的Winfrom 已经没怎么接触了,最近想搞一个类似QQ的简单内部沟通程序,于是就重新用Winfrom着手搭建。在搭建的时候遇到一个问题就是除了要在文本框(RichTextBox)输入文字外,还想插入图片。那怎么办呢?后来查询得知,原来文本框是支持Rtf格式。Rtf是富文本格式,支持文件和图片那就OK了,怎么处理呢?其实就是通过粘贴到文本框。

代码语言:txt
复制
 openFileDialog1.Filter = "bmp文件(*.bmp)|*.bmp|jpg文件(*.jpg)|*.jpg|ico文件(*.ico)|*.ico";
 openFileDialog1.Title = "打开图片";
 openFileDialog1.FilterIndex = 2;
 if (openFileDialog1.ShowDialog() == DialogResult.OK)
 {
     Bitmap bmp = new Bitmap(openFileDialog1.FileName);
     Clipboard.SetDataObject(bmp, false);
     if (uiRichTextBox1.CanPaste(DataFormats.GetFormat(DataFormats.Bitmap)))
         uiRichTextBox1.Paste();
 }

简单说明一下该代码吧,首先是通过文件框让用户选择相关的图片,将图片复制到粘贴板。再判断粘贴板的是否能粘贴,可以的就粘贴。这样就简单解决了文本框的图片粘贴。接下来就是到如何保存了。。

代码语言:txt
复制
     StringBuilder sb = new StringBuilder();
     byte[] bytes = Encoding.Default.GetBytes(uiRichTextBox1.Rtf);
     foreach (byte b in bytes)
     {
         sb.Append(b + "|");
     }     

先通过StringBuilder 构建一个字符串容器,然后通过Encoding.Default.GetBytes将文本框的内容转为字节,然后每个字节通过“|”划分,保存到字符串容器,最后一个保存写库即可。感觉可以增加个压缩功能,但这个后面需要再处理。既然保存了,怎么显示的呢?好吧。。

代码语言:txt
复制
  string[] strs = sb.ToString().Trim().Split('|');
  int length = strs.Length; 
  for (int i = 0; i < length; i++)
  {
      if (strs[i].Trim().Length > 0)
      {
          bytes[i] = Convert.ToByte(strs[i]);
      }
  }
  if (bytes != null)
  {    
      uiRichTextBox2.Rtf = Encoding.Default.GetString(bytes);
  }

这里就不多说了。。最后还要注意一个地方就是RichTextBox的控件一开始不能只读,只能写入后通过ReadOnly进行控制。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档