



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WinForms C#:html编辑器工程源码,含直接写WebBrowser的文件流、IPersistStreamInit接口的声明和一些相关的小方法首先多谢朋友们的捧场;今天给大家带来一个操作WebBrowser的一些高级方法,我专门写了一个html编辑器的实现代码,有需要的朋友可以自己扩充;功能实现是直接写流到WebBrowser内不通过临时文件,并且支持对WebBrowser的一些高级控制(其实script可以达到的均可达到,想知道怎么搞的可以阅读代码)。其中关于IPersistStreamInit接口的声明费了翻工夫,因为以前在delphi中没这么麻烦,呵呵。在网络上找了大半天没找到,最后还是祭出Reflector,反编译Windows.Forms,需要的朋友可以不用辛苦的自己搞了!我在这个演示里,制作的html编辑环境是比简单的,您可以看看,比较比较 CodeProject 上的代码;我采用的是ie自身提供的编辑方法,只是这样的方式都被运用于web方式的编辑器内,就好比这个freeTextBox以下是主要的代码:1 /*/* 2 * 初始化浏览器状态 3 * 指向about:blank 4 * */ 5 private void Form1_Load(object sender, System.EventArgs e) 6 object obj = null; 7 this.Show(); 8 this.axWb.Navigate(about:blank,ref obj,ref obj,ref obj,ref obj); 9 /等待完成动作 10 while(axWb.ReadyState SHDocVw.tagREADYSTATE.READYSTATE_INTERACTIVE) 11 Application.DoEvents(); 12 13 /初始化html编辑器 14 InitHtmlEditor(); 15 16 17 /*/* 18 * 这里是核心方法 19 * 完全调用IE自身的html编辑功能 20 * 可以看到,我采用了一种兼容的 21 * 方式,用Frame(框架),这样 22 * 的话,默认安装的Windows 98都 23 * 支持html编辑功能; 24 * 关键代码如下: 25 * frame.document.designMode = on; 26 * 表示开启设计模式 27 */ 28 private void InitHtmlEditor() 29 string sw = ; 30 sw += rn; 31 sw += rn; 32 sw += function loadSet()rn; 33 sw += var frame=document.getElementById(i-frame).contentWindow;rn; 34 sw += frame.document.designMode = on;rn; 35 sw += frame.document.open();rn; 36 sw += frame.document.write(hello 大家好啊!我是S.F. ; 37 sw += 欢迎访问我的weblog);rn; 38 sw += frame.document.close();rn; 39 sw += rn; 40 sw += function setBlod(obj)rn; 41 sw += document.getElementById(i-frame).contentWindow.document.execCommand(bold);rn; 42 sw += rn; 43 sw += rn; 44 /这里加入了一个html的button,也就是说,你可以把web模式的html编辑器的代码完全copy进来 45 sw += Blodrn; 46 sw += rn; 47 sw += rn; 48 49 /写入浏览器 50 WriteHtml(sw); 51 52 53 private void WriteHtml(string s) 54 /内存流,用于转换string 55 MemoryStream ms = new MemoryStream(); 56 try 57 byte htmlcode = System.Text.Encoding.Default.GetBytes(s); 58 ms.Write(htmlcode,0,htmlcode.Length); 59 Stream dataStream = ms; 60 /恢复指针位置 61 dataStream.Seek(0,0); 62 63 if(axWb.Document!=null) 64 /转换接口,并转换为IStream 65 (axWb.Document as UnsafeNativeMethods.IPersistStreamInit).Load(new UnsafeNativeMethods.ComStreamFromDataStream(dataStream); 66 67 finally 68 ms.Close(); 69 70 71 72 private void button1_Click(object sender, System.EventArgs e) 73 /获取document,在IHTMLDocument2中取得桢 74 mshtml.IHTMLDocument3 idoc = (mshtml.IHTMLDocument3)axWb.Document; 75 mshtml.IHTMLFrameBase2 fb= (mshtml.IHTMLFrameBase2)idoc.getElementById(i-frame); 76 object obj=null; 77 fb.contentWindow.document.execCommand(bold,true,obj); 78 79 80 private void button3_Click(object sender, System.EventArgs e) 81 /获取document,在IHTMLDocument2中才有body.style 82 mshtml.IHTMLDocument2 idoc = (mshtml.IHTMLDocument2)axWb.Document; 83 /指定为IHTMLStyle3,才可以定制滚动条颜色 84 mshtml.IHTMLStyle3 istyle = (mshtml.IHTMLStyle3)idoc.body.style; 85 istyle.scrollbarArrowColor = #0099FF; 86 istyle.scrollbar3dLightColor = #FFFFFF; 87 istyle.scrollbarDarkShadowColor = #0099FF; 88 istyle.scrollbarFaceColor = #99CCFF; 89 istyle.scrollbarHighlightColor = #0099FF; 90 istyle.scrollbarShadowColor = #0099FF; 91 istyle.scrollbarTrackColor = #FFFFFF; 92 93 94 95 private void button2_Click(object sender, System.EventArgs e) 96 /查看源码,文本方式 97 mshtml.IHTMLDocument3 idoc = (mshtml.IHTMLDocument3)axWb.Document; 98 mshtml.IHTMLFrameBase2 fb= (mshtml.IHTMLFrameBase2)idoc.getElementById(i-frame); 99 MessageBox.Show(fb.contentWindow.document.body.innerText);100 101102 private void button4_Click(object sender, System.EventArgs e) 103 /查看源码,HTML方式104 mshtml.IHTMLDocument3 idoc = (m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深深的友情写事抒情作文10篇范文
- 2025河北唐山幼儿师范高等专科学校选聘工作人员35人考前自测高频考点模拟试题及答案详解(历年真题)
- 创新产品技术攻关保证承诺书6篇范文
- 2025-2026学年四川省广安市广安三区联考高三上学期8月月考英语试题(解析版)
- 医疗卫生行业疾病预防控制承诺书4篇
- 智能科技类设备持续稳定运行承诺函8篇范文
- 合同审批流程标准化模板提升合同管理效率
- 2025年江西省省直事业单位招聘工作人员笔试违纪违规处理意见模拟试卷附答案详解
- 2025贵州电子职业技术学院第十三届贵州人才博览会引进16人考前自测高频考点模拟试题及答案详解(典优)
- 2025年宁波余姚市妇幼保健院医共体第一次招聘编外人员18人考前自测高频考点模拟试题及答案详解(新)
- 母婴分离护理常规
- 污泥池清理管理制度
- 推进信息化建设“十五五”规划-(2025-2025年)-根据学校十五五
- 保护环境的课件
- 华电集团就业协议书
- 拆旧建屋合同协议书
- 图深度强化学习在配电网故障恢复中的应用研究
- (2017)海南省房屋建筑与装饰装修工程综合定额交底资料
- 拆除重建工程施工方案
- 《社会科学研究方法》课件
- 《基础护理学》第七版考试题库大全-上部分(600题)
评论
0/150
提交评论