[英]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.