利用IE浏览器的Com组件在WinForm中显示资源中的HTML文

来源:互联网 发布:流程优化案例 编辑:程序博客网 时间:2024/06/06 00:03
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
  /// 利用Com" target=_blank>IECom" target=_blank>浏览器的Com组件WinForm中显示资源文件中的HTML文件.
  ///
  /// 这里重点有两个:
  /// 1. 调用Com" target=_blank>IE的Com组件
  /// 2. 调用编译到exe文件中的resource
  /// 具体步骤如下,具体用法请查询帮助:
  /// 0. 在Project中添加about.htm, 内容自定,属性设置为"Embedded Resource"
  /// 1. 在菜单tools->customize toolbox里面选中Com组件"microsot web Com" target=_blank>浏览器"
  /// 2. 在Solution explorer->Test(项目名)->References右键添加Microsoft.msHTML(msHTML.dll)
  /// 3. 在WinForm窗体上放置Com" target=_blank>浏览器新增加的Com" target=_blank>浏览器控件axWebBrowser1
  /// 4. 添加链接按钮linkAbout
  /// 5. 关键代码如下:
  private void linkAbout_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
  {
   this.navigate("about:blank");
   msHTML.IHTMLDocument2 doc  = (msHTML.IHTMLDocument2)this.axWebBrowser1.Document;
   String aboutHTML = this.getStringResource("about.htm");
   System.Diagnostics.Debug.Write(aboutHTML);
   object[] obj = {aboutHTML};
   doc.write(obj);
  }
  private string getStringResource(String name)
  {
   System.Reflection.Assembly asm = this.GetType().Assembly;
   //list all resources in this file
   System.Diagnostics.Debug.WriteLine("found resouces:");
   foreach (String rs in asm.GetManifestResourceNames())
    System.Diagnostics.Debug.WriteLine(rs);
   name = this.GetType().Namespace+"."+name;
   
   System.IO.Stream strm = asm.GetManifestResourceStream(name);
   //convert to String with default system encoding.
   return new System.IO.StreamReader(strm,System.Text.Encoding.Default).ReadToEnd();
  }
  private void navigate(String url)
  {
   object flags = 0;
   object targetFrame = String.Empty;
   object postData = String.Empty;
   object headers = String.Empty;
   this.axWebBrowser1.Navigate(url,ref flags,ref targetFrame,ref postData,ref headers);
  }
  ///后记:
  ///兄弟刚学C#,抛砖引玉,希望大家共同学习,有错误的地方请告诉我 msn: steeven_lee@citiz.net
  ///还有两个地方不清楚:
  ///1.有文章提到 res://Test.exe/about.htm 的用法好象行不通.
  ///2.重复点击about.htm的时候会不显示.
  ///我还写了一个聊天室刷屏的程序,需要的朋友请留言,呵呵
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击