【发布时间】:2013-08-08 04:39:20
【问题描述】:
从我的Form1 初始化一个类scraper。在scraper 类中有一个函数login。这个想法是,该类记录用户在网站上的登录,并返回网络浏览器,以便在Form1 中提供登录的网络浏览器控件。
到目前为止我已经得到了这个代码:Form1
private void button1_Click(object sender, EventArgs e)
{
Scraper scraper = new Scraper(this);
scraper.login(conf._webLogin);
}
public void updateLoginWeb(WebBrowser web)
{
webBrowser1 = web;
MessageBox.Show("DONE");
}
conf 类:
public WebBrowser _webLogin = new WebBrowser();
刮板类:
private Form1 parent;
private WebBrowser _web_Login = new WebBrowser();
public Scraper()
{
}
public Scraper(Form1 parent)
: this()
{
this.parent = parent;
}
public void login(WebBrowser web)
{
_web_Login = web;
_web_Login.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(login_DocumentCompleted);
_web_Login.Navigate("http://www.google.com/");
}
private void login_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//This line is so you only do the event once
if (e.Url != _web_Login.Url)
return;
parent.updateLoginWeb(_web_Login);
}
我使用 google 作为测试,但没有任何效果(甚至不是另一个网站)。
问题是Form 中的网络浏览器没有更新。它仍然是一个白屏。
你们怎么看这个?你知道问题是什么,或者你们知道更好的方法来解决这个问题吗?
【问题讨论】:
-
你有跨线程调用网络浏览器吗?
-
@user64,不。只是这 1 个被按钮触发的东西......
-
webbrowser 是否在 UI 线程上运行?网络浏览器使用代理吗?检查 google.com 是否显示在 IE 中
-
@user64,是的,它在 UI 线程中运行,不,浏览器不使用代理
-
@Shaeldon,如果您要基于clean up request 发布edit 帖子,请编辑整个 帖子。不要只删除几行。我拒绝并编辑了大量您建议的编辑。如果我看到它,我也会拒绝。
标签: c# winforms class browser webbrowser-control