(附代码,可直接Copy运行)WebBrowser的Navigate方法经常弹出IE,如何解决? 本帖最后由 sui_bian 于 2010-10-10 23:42:47 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //让打开的页面在本窗口显示 private void webBrowser1_NewWindow(object sender, CancelEventArgs e) { e.Cancel = true; WebBrowser webBrowser_temp = (WebBrowser)sender; string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href"); this.webBrowser1.Url = new Uri(newUrl); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //将所有的链接的目标,指向本窗体 foreach (HtmlElement archor in this.webBrowser1.Document.Links) { archor.SetAttribute("target", "_self"); } //将所有的FORM的提交目标,指向本窗体 foreach (HtmlElement form in this.webBrowser1.Document.Forms) { form.SetAttribute("target", "_self"); } } private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { WebBrowser webBrowser_temp = (WebBrowser)sender; string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href"); e.Cancel = true; }总不结帖子,都不想回答了。 试了一下楼上的办法,NewWindow事件不会进,DocumentCompleted事件进了,Copy楼上的代码后运行,仍会弹IE private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { WebBrowser webBrowser_temp = (WebBrowser)sender; string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href"); e.Cancel = true; }可以删除,NewWindow事件不会进,你webbroser有绑定这个事件,直接copy上面代码当然不行了,还要手动绑定到事件。 DocumentCompleted事件都进了,当然有绑定 因为第二个url的页面中的js会自动执行跳转,所以必须等到所有页面跳转都完成后,才能够dispose这个webbrowser解决办法是返回前等待一段时间,或者把页面转到一个空白页: ... string result = webBrowser.DocumentText; webBrowser.Navigate("about:blank"); Application.DoEvents(); return result;一般来说不需要重复创建webbrowser,创建一个类成员就可以了(就是被你注释起来的那种写法),这种情况下如果还有弹出IE的情况,可以参考1楼的写法,并且注意退出程序前延迟足够的时间,让webbrowser有机会把页面处理完成。 如何给已经绑定动态的ddl的集合项的第一个位置给值啊。 如何在TextBox里面显示mm的2次方? enterprise services 这个类中怎么添加其他类的事件代码??? 关于医疗保险住院的报销 为什么我的命令行不显示啊?? 引用类型 急求关于控件打印解决方法 怎样在局域网中下载须要用户名和密码访问的文件! 有没有在关闭窗口的同时也关闭别的窗口的方法 关于遍历的问题! 怎样获取System.Collections.IEnumerable里边有多少列?
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
WebBrowser webBrowser_temp = (WebBrowser)sender;
string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
this.webBrowser1.Url = new Uri(newUrl);
} private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//将所有的链接的目标,指向本窗体
foreach (HtmlElement archor in this.webBrowser1.Document.Links)
{
archor.SetAttribute("target", "_self");
}
//将所有的FORM的提交目标,指向本窗体
foreach (HtmlElement form in this.webBrowser1.Document.Forms)
{
form.SetAttribute("target", "_self");
}
} private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
WebBrowser webBrowser_temp = (WebBrowser)sender;
string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
e.Cancel = true;
}总不结帖子,都不想回答了。
{
WebBrowser webBrowser_temp = (WebBrowser)sender;
string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");
e.Cancel = true;
}
可以删除,
NewWindow事件不会进,你webbroser有绑定这个事件,直接copy上面代码当然不行了,还要手动绑定到事件。
解决办法是返回前等待一段时间,或者把页面转到一个空白页: ...
string result = webBrowser.DocumentText;
webBrowser.Navigate("about:blank");
Application.DoEvents();
return result;一般来说不需要重复创建webbrowser,创建一个类成员就可以了(就是被你注释起来的那种写法),这种情况下如果还有弹出IE的情况,可以参考1楼的写法,并且注意退出程序前延迟足够的时间,让webbrowser有机会把页面处理完成。