webBrowser控制新窗口

当页面为新 窗口弹出时,下面代码分别演示如何在新建form中加载页面以及当前form的web控件加载form

  1、新建form,这个大多数人 都应该知道。用newwindow2就可以了,不过vs2005的web控件是ms封装过的,需要注意一下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsApplication24
...{
  public partial class Form1 : Form
   ...{
    
    public Form1()
    ...{
       InitializeComponent();
       this.webBrowser1.Navigate("about:blank");
       (this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(Form1_NewWindow2);
   
    }
    private void button1_Click(object sender, EventArgs e)
     ...{
      this.webBrowser1.Navigate("www.google.cn");
    }
   
    void Form1_NewWindow2(ref object ppDisp, ref bool Cancel)
     ...{
      Form1 frm = new Form1();
      ppDisp = frm.webBrowser1.ActiveXInstance;
      frm.Show();
    }
  
   }
}

  2、在当前窗体的web控件中直接加载,这个需要用到NewWindow3 事件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsApplication24
...{
  public partial class Form1 : Form
   ...{
    
    public Form1()
    ...{
       InitializeComponent();
       this.webBrowser1.Navigate("about:blank");
       (this.webBrowser1.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Form1_NewWindow3);
   
    }
  
    void Form1_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
     ...{
      Cancel = true;
       this.webBrowser1.Navigate(bstrUrl);
    }
    private void button1_Click(object sender, EventArgs e)
    ...{
       this.webBrowser1.Navigate("www.google.cn");
    }
  
  }
}

来源:csdn    作者:贾涛    责编:豆豆技术应用

原文地址:https://www.cnblogs.com/niuniu502/p/1852268.html