急急急!!!WebBrowser.Navigate问题

sjmsky111 2009-01-06 10:18:53
我用VB.NET2005做个了程序,用了2个WEBBROWSER控件,第一个控件加载一段网页http://www.12333sh.gov.cn/website/frame_1.htm。
如何用第2个WEBBROWSER控件实现在第1个控件中点击超链接不弹出新窗口 。
Private Sub WebBrowser1_NewWindow1(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
e.Cancel = True
WebBrowser2.Navigate(WebBrowser1.StatusText)
End Sub
现在遇到的问题是 点击普通链接可以实现,但点击如上述网址中的“查询”链接却不能,哪位高手帮忙下,是不是链接的类型不同?
...全文
1601 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenRH 2010-01-07
  • 打赏
  • 举报
回复
同问
lfywy 2009-03-09
  • 打赏
  • 举报
回复
UP
sjmsky111 2009-01-08
  • 打赏
  • 举报
回复
自己顶
HBJMSHOP 2009-01-07
  • 打赏
  • 举报
回复
关注中
sjmsky111 2009-01-06
  • 打赏
  • 举报
回复
那个‘查询’是个按钮,不是链接,我需要WEBBROWSER控件加载按钮弹出的网页
沐NeMo 2009-01-06
  • 打赏
  • 举报
回复
WebBrowser 打开新窗口

http://topic.csdn.net/u/20081119/18/2b344f68-be75-433a-86b3-28c46af5a3bc.html?seed=1813933639

http://zhidao.baidu.com/question/16424438.html
http://www.baidu.com/s?ct=0&ie=gb2312&bs=webbrowser+%BF%AA%B4%B0&sr=&z=&cl=3&f=8&wd=webbrowser++%D0%C2%B4%B0%BF%DA


VB2005中的WebBrowser1的问题

先用NewWindow事件捕获新窗口要打开的URL,然后把它设置为自定义新窗口的URL,并打开自定义新窗口,接着取消用系统默认浏览器打开新窗口的动作。

示例代码:
Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
Dim NewURL As String = CType(sender, WebBrowser).StatusText
Dim frmNew As New Form1
frmNew.WebBrowser1.Navigate(NewURL)
'或者是frmNew.WebBrowser1.Url = New Uri(NewURL)
frmNew.Show()
e.Cancel = True
End Sub
二、

Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
REM 本代码出自罗漫年华,http://hi.baidu.com/fronthua
Dim urlNew As String = sender.Document.ActiveElement.GetAttribute("href")
Dim newForm As New Form1
e.Cancel = True
newForm.Show()
newForm.WebBrowser1.Navigate(urlNew)

End Sub


webBrowser控制新窗口
http://blog.csdn.net/jinjazz/archive/2007/11/24/1901192.aspx

当页面为新窗口弹出时,下面代码分别演示如何在新建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");
}
}
}


2、如何使用IHTMLDocument2等MSHTML功能

VS2005中沒有完全封裝MSHTML中的功能,留了個DomDocument接口。直接引用Microsoft HTML Object Library類庫後,就可以操作IHTMLDocument2等複雜的功能了。如:IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document.DomDocument;

3、如何提取網頁中的圖片,尤其是驗證碼圖等以流方式返回的圖片

很多網站一些圖片是動態生成了,是從服務器以流方式一點點發過來再組裝成圖片的。不管是以什麼方式,到了客戶端,都是完整的。用WebBrowser的好處就在這裡,只要管住最終結果就OK了。以下是得到網頁上驗證碼的代碼:

/// <summary>

///返回指定WebBrowser中圖片<IMG></IMG>中的圖內容

/// </summary>

/// <param name="WebCtl">WebBrowser控件</param>

/// <param name="ImgeTag">IMG元素</param>

/// <returns>IMG對象</returns>

private Image GetWebImage(WebBrowser WebCtl, HtmlElement ImgeTag)

{

HTMLDocument doc = (HTMLDocument)WebCtl.Document.DomDocument;

HTMLBody body = (HTMLBody)doc.body;

IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange();

IHTMLControlElement Img = (IHTMLControlElement)ImgeTag.DomElement; //圖片地址

Image oldImage = Clipboard.GetImage();

rang.add(Img);

rang.execCommand("Copy", false, null); //拷貝到內存

Image numImage = Clipboard.GetImage(); //從Clipboard中取圖

Clipboard.SetImage(oldImage); //還原

return numImage;

}


feifeiyiwen 2009-01-06
  • 打赏
  • 举报
回复
ding
alan001 2009-01-06
  • 打赏
  • 举报
回复
没试过

UP
chuxue1342 2009-01-06
  • 打赏
  • 举报
回复
顶顶!

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧