关于c#使用图文混排

失落的神庙 2014-08-08 02:24:36
richtextbox
支持图文混排
但是。
我想像doc一样实现从剪贴板把图文混排的数据粘贴进 richtextbox

同样也可以复制出来 粘贴到别的 地方。

可是一直没实现。

...全文
410 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的神庙 2014-08-09
  • 打赏
  • 举报
回复
  private void button5_Click(object sender, EventArgs e)
        {
            string html = "<p>这是中文,后面是文字<br><br><img src=\"http://ww1.sinaimg.cn/bmiddle/a275cdabjw1dupso16zldg.gif\" /><br>后面还是文字,非常不错的昂\\</p>";
            var data = GetHtmlData(html);
            Clipboard.SetData(DataFormats.Html, data);
        }

        private static string GetHtmlData(string html)
        {
            var sb = new StringBuilder();
            const string header = @"Format:HTML Format
            Version:1.0
            StartHTML:<<<<<<<1
            EndHTML:<<<<<<<2
            StartFragment:<<<<<<<3
            EndFragment:<<<<<<<4
            StartSelection:<<<<<<<3
            EndSelection:<<<<<<<3";
            sb.Append(header);
            int startHtml = sb.Length;
            sb.Append(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN""><!--StartFragment-->");
            int fragmentStart = sb.Length;
            sb.Append(html);
            int fragmentEnd = sb.Length;
            sb.Append(@"<!--EndFragment-->");
            int endHtml = sb.Length;
            // Backpatch offsets
            sb.Replace("<<<<<<<1", String.Format("{0,8}", startHtml));
            sb.Replace("<<<<<<<2", String.Format("{0,8}", endHtml));
            sb.Replace("<<<<<<<3", String.Format("{0,8}", fragmentStart));
            sb.Replace("<<<<<<<4", String.Format("{0,8}", fragmentEnd));
            MemoryStream vMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(sb.ToString()));           
            //MemoryStream vMemoryStream = new MemoryStream(System.Text.Encoding.GetEncoding("gb2312").GetBytes(sb.ToString()));
            string str = Encoding.GetEncoding(0).GetString(vMemoryStream.ToArray());
            vMemoryStream.Close();
            return str;
        }
搞定。 使用html 粘贴复制。 剩下的就只需要自己构造html了
失落的神庙 2014-08-08
  • 打赏
  • 举报
回复
引用 8 楼 jhll 的回复:
String path = @"C:\给分.jpg"; Clipboard.Clear(); Bitmap bmp = new Bitmap(path); Clipboard.SetImage(bmp); richTextBox1.Paste(); Clipboard.Clear(); 至于文字就更简单了
额。 这个我知道。 现在实现了 设置混合图文到剪贴板。 然后可以在其它地方粘贴。 剩下一个问题。 就是混合图文编辑了。 如果不行 我就用doc算了
jhll 2014-08-08
  • 打赏
  • 举报
回复
String path = @"C:\给分.jpg"; Clipboard.Clear(); Bitmap bmp = new Bitmap(path); Clipboard.SetImage(bmp); richTextBox1.Paste(); Clipboard.Clear(); 至于文字就更简单了
失落的神庙 2014-08-08
  • 打赏
  • 举报
回复
排没问题。 问题是在于。 把排好的怎么放到剪贴板。 然后ctrl+v 就可以粘贴在doc里面 (图文混排) 我还没搞懂剪贴板里的图文混排是以怎样的形式存储的
失落的神庙 2014-08-08
  • 打赏
  • 举报
回复
引用 4 楼 mjp1234airen4385 的回复:
这个时候,就是考验你的能力了。
皇上。 臣妾做不到。。。
失落的神庙 2014-08-08
  • 打赏
  • 举报
回复
引用 3 楼 jshi123 的回复:
直接就可以从word复制粘贴啊
这个。 如果别人没装office 那就悲剧了。
mjp1234airen4385 2014-08-08
  • 打赏
  • 举报
回复
这个时候,就是考验你的能力了。
jshi123 2014-08-08
  • 打赏
  • 举报
回复
直接就可以从word复制粘贴啊
失落的神庙 2014-08-08
  • 打赏
  • 举报
回复
引用 1 楼 wangnaisheng 的回复:
http://www.cnblogs.com/JuneZhang/archive/2011/05/20/2051973.html 借鉴
没用已测试。 谢谢了。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧