首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winform not浏览器未被替换

winform not浏览器未被替换
EN

Stack Overflow用户
提问于 2013-08-07 00:15:39
回答 1查看 142关注 0票数 0

在我的Form1中,我初始化了一个类scraper。在scraper类中有一个函数login。其思想是,该类将用户登录到网站上,并返回web浏览器,以便在Form1中可以使用登录的webbrowser控件。

到目前为止,我已经掌握了以下代码:Form1

代码语言:javascript
复制
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类:

代码语言:javascript
复制
public WebBrowser _webLogin = new WebBrowser();

刮刀级:

代码语言:javascript
复制
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);
}

我使用谷歌作为测试,但没有任何工作(甚至是另一个网站)。

问题是Form中的isn浏览器没有更新。它仍然是白色的屏幕。

你们觉得这个怎么样?你们知道问题出在哪里吗,或者你们知道更好的方法来处理这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-07 01:05:41

我认为您的问题是不能简单地赋值webBrowser变量:

代码语言:javascript
复制
webBrowser1 = web;

您正在更改Form1.webBrower 1变量,但是Forms.Controls集合仍然指向原始的webBrowser控件。

你不能把Form1.webBrower 1传递给scraper.login函数吗?:

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
{
    Scraper scraper = new Scraper(this);
    scraper.login(webBrowser1);  
}

public void updateLoginWeb(WebBrowser web)
{
    //webBrowser1 = web;  // you don't need this anymore
    MessageBox.Show("DONE");
}

如果您真的需要替换您的控件,您可以这样做:

代码语言:javascript
复制
public void updateLoginWeb(WebBrowser web)
{
    Controls.Remove(webBrowser1);
    Controls.Add(web);
    webBrowser1 = web;  // you don't need this anymore
    MessageBox.Show("DONE");
}

但是您可能会手动设置新的webbrowser布局属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18092618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档