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
"
);
}
}
}
浙公网安备 33010602011771号