操作WebBrowser的一些高级方法.doc_第1页
操作WebBrowser的一些高级方法.doc_第2页
操作WebBrowser的一些高级方法.doc_第3页
操作WebBrowser的一些高级方法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论