一个C#的工程,现在要把IE嵌入到窗口中,使得可以给一个URL就可以让相关内容显示在这个窗体中(比如是个对话框),该如何来做? C#有现成的类或者代码吗?

解决方案 »

  1.   

    在vs 2005里有WebBrowser控件,直接拖放到窗体上即可。
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    using System.Threading;
    using Utility;namespace DMS.Component
    {
    /// <summary>
    /// Browser 的摘要说明。
    /// </summary>
    public class Browser : System.Windows.Forms.UserControl
    {
    private AxSHDocVw.AxWebBrowser mBrowser;
    private System.Windows.Forms.Panel panel1;
    /// <summary> 
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Browser()
    {
    InitializeComponent();
    Reset();
    } protected override void WndProc(ref Message m)
    {
    try
    {
    base.WndProc (ref m);
    }
    catch
    {
    }
    }
      

  3.   

    /// <summary> 
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region 组件设计器生成的代码
    /// <summary> 
    /// 设计器支持所需的方法 - 不要使用代码编辑器 
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Browser));
    this.mBrowser = new AxSHDocVw.AxWebBrowser();
    this.panel1 = new System.Windows.Forms.Panel();
    ((System.ComponentModel.ISupportInitialize)(this.mBrowser)).BeginInit();
    this.panel1.SuspendLayout();
    this.SuspendLayout();
    // 
    // mBrowser
    // 
    this.mBrowser.AccessibleDescription = resources.GetString("mBrowser.AccessibleDescription");
    this.mBrowser.AccessibleName = resources.GetString("mBrowser.AccessibleName");
    this.mBrowser.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("mBrowser.Anchor")));
    this.mBrowser.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("mBrowser.BackgroundImage")));
    this.mBrowser.ContainingControl = this;
    this.mBrowser.Dock = ((System.Windows.Forms.DockStyle)(resources.GetObject("mBrowser.Dock")));
    this.mBrowser.Enabled = ((bool)(resources.GetObject("mBrowser.Enabled")));
    this.mBrowser.Font = ((System.Drawing.Font)(resources.GetObject("mBrowser.Font")));
    this.mBrowser.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("mBrowser.ImeMode")));
    this.mBrowser.Location = ((System.Drawing.Point)(resources.GetObject("mBrowser.Location")));
    this.mBrowser.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("mBrowser.OcxState")));
    this.mBrowser.RightToLeft = ((bool)(resources.GetObject("mBrowser.RightToLeft")));
    this.mBrowser.Size = ((System.Drawing.Size)(resources.GetObject("mBrowser.Size")));
    this.mBrowser.TabIndex = ((int)(resources.GetObject("mBrowser.TabIndex")));
    this.mBrowser.Text = resources.GetString("mBrowser.Text");
    this.mBrowser.Visible = ((bool)(resources.GetObject("mBrowser.Visible")));
    this.mBrowser.DocumentComplete += new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.mBrowser_DocumentComplete);
    // 
    // panel1
    // 
    this.panel1.AccessibleDescription = resources.GetString("panel1.AccessibleDescription");
    this.panel1.AccessibleName = resources.GetString("panel1.AccessibleName");
    this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("panel1.Anchor")));
    this.panel1.AutoScroll = ((bool)(resources.GetObject("panel1.AutoScroll")));
    this.panel1.AutoScrollMargin = ((System.Drawing.Size)(resources.GetObject("panel1.AutoScrollMargin")));
    this.panel1.AutoScrollMinSize = ((System.Drawing.Size)(resources.GetObject("panel1.AutoScrollMinSize")));
    this.panel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel1.BackgroundImage")));
    this.panel1.Controls.Add(this.mBrowser);
    this.panel1.Dock = ((System.Windows.Forms.DockStyle)(resources.GetObject("panel1.Dock")));
    this.panel1.Enabled = ((bool)(resources.GetObject("panel1.Enabled")));
    this.panel1.Font = ((System.Drawing.Font)(resources.GetObject("panel1.Font")));
    this.panel1.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("panel1.ImeMode")));
    this.panel1.Location = ((System.Drawing.Point)(resources.GetObject("panel1.Location")));
    this.panel1.Name = "panel1";
    this.panel1.RightToLeft = ((System.Windows.Forms.RightToLeft)(resources.GetObject("panel1.RightToLeft")));
    this.panel1.Size = ((System.Drawing.Size)(resources.GetObject("panel1.Size")));
    this.panel1.TabIndex = ((int)(resources.GetObject("panel1.TabIndex")));
    this.panel1.Text = resources.GetString("panel1.Text");
    this.panel1.Visible = ((bool)(resources.GetObject("panel1.Visible")));
    // 
    // Browser
    // 
    this.AccessibleDescription = resources.GetString("$this.AccessibleDescription");
    this.AccessibleName = resources.GetString("$this.AccessibleName");
    this.AutoScroll = ((bool)(resources.GetObject("$this.AutoScroll")));
    this.AutoScrollMargin = ((System.Drawing.Size)(resources.GetObject("$this.AutoScrollMargin")));
    this.AutoScrollMinSize = ((System.Drawing.Size)(resources.GetObject("$this.AutoScrollMinSize")));
    this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
    this.Controls.Add(this.panel1);
    this.Enabled = ((bool)(resources.GetObject("$this.Enabled")));
    this.Font = ((System.Drawing.Font)(resources.GetObject("$this.Font")));
    this.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("$this.ImeMode")));
    this.Location = ((System.Drawing.Point)(resources.GetObject("$this.Location")));
    this.Name = "Browser";
    this.RightToLeft = ((System.Windows.Forms.RightToLeft)(resources.GetObject("$this.RightToLeft")));
    this.Size = ((System.Drawing.Size)(resources.GetObject("$this.Size")));
    ((System.ComponentModel.ISupportInitialize)(this.mBrowser)).EndInit();
    this.panel1.ResumeLayout(false);
    this.ResumeLayout(false); }
    #endregion bool mCompleteFlag = true;
    /// <summary>
    /// 定制发送头
    /// </summary>
    public string Headers
    {
    get
    {
    return mHeaders;
    }
    set
    {
    mHeaders = value;
    }
    }
    private string mHeaders = ""; private void mBrowser_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
    {
    mCompleteFlag = true;
    } /// <summary>
    /// 以串行的方式把IE控件导航到指定的URL, 当接收到IE控件发出DocumentComplete事件时即返回
    /// </summary>
    /// <param name="url"></param>
    public void Goto(string url)
    {
    try
    {
    if (mCompleteFlag == false)
    {
    return;
    } mCompleteFlag = false;

    IEUtil.BrowserNavigate(mBrowser, url, mHeaders);
    while (mCompleteFlag == false)
    {
    Application.DoEvents();
    Thread.Sleep(1);
    }
    }
    catch(Exception err)
    {
    throw new Exception(err.ToString());
    }
    }
      

  4.   

    添加 COM控件 ———— WebBrowser   (web浏览器)
      

  5.   

    /// <summary>
    /// 把IE控件导航到about:blank页面.
    /// </summary>
    public void Reset()
    {
    Goto("about:blank");
    }        public void Refresh2()
            {
                object o = Type.Missing;
                this.mBrowser.Refresh2(ref o);
            } /// <summary>
    /// 获取IE控件的 Document 对象
    /// </summary>
    public object Document
    {
    get
    {
    return mBrowser.Document;
    }
    } /// <summary>
    /// 获取控件所封装的IE控件, 以实现更深更详细的功能调用
    /// </summary>
    public AxSHDocVw.AxWebBrowser WebBrowser
    {
    get
    {
    return mBrowser;
    }
    }
    }
    }