繁体   English   中英

Windows窗体中的Web浏览器

[英]Web Browser in Windows Form

我正在尝试在Windows窗体应用程序中创建一个简单的浏览器。 我的第一个网站http://www.msn.com已加载到Form_Load的浏览器中。 但是当我在textbox1中设置一个有效的url时,什么也没有出现。 webBrowser1.Document.Focus(); 捕获错误。 “对象引用为null或....”,即null实例的常见问题。

private void Form1_Load(object sender, EventArgs e)
{          
    myMethod("http://www.msn.com"); 
}

private void button1_Click(object sender, EventArgs e)
{
    myMethod(textbox1.Text);
}

public void myMethod(string url)
{
    webBrowser1.DocumentCompleted += browser_DocumentCompleted;
    webBrowser1.Navigate(new Uri(url));
    webBrowser1.Document.Focus();
}    

最新

参考@Hans Passant,我终于明白了代码的哪一部分是不正确的。

我们从myMethod中的事件订阅

webBrowser1.DocumentCompleted += browser_DocumentCompleted;

而且我们从不退订活动

因此,如果发生webBrowser1.DocumentCompleted我们将增加订阅时间并触发browser_DocumentComplete d一次以上。

建议

//constructor
public Form1()
{
    InitializeComponent();
    //declare webBrowser1 before this
    //subscribe only once here
    webBrowser1.DocumentCompleted += browser_DocumentCompleted;
    //try these two if still fail
    //this.webBrowser1.AllowWebBrowserDrop = false; 
    //this.webBrowser1.ScrollBarsEnabled = false;
}

private void Form1_Load(object sender, EventArgs e)
{          
    myMethod("http://www.msn.com"); 
}

private void button1_Click(object sender, EventArgs e)
{
    myMethod(textbox1.Text);
}

public void myMethod(string url)
{
    webBrowser1.Navigate(new Uri(url));
    webBrowser1.Document.Focus();
}

private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    this.Text = e.Url.ToString() + " loaded";
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    //unsubscribe here
    webBrowser1.DocumentCompleted -= browser_DocumentCompleted;
    webBrowser1.Dispose();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM