110,538
社区成员
发帖
与我相关
我的任务
分享
using System.Windows.Forms;
namespace WindowsFormsApp3
{
public partial class Form1 : Form
{
string Html;
public Form1()
{
InitializeComponent();
GetHtml();
MessageBox.Show("这是GetHtml()函数运行后的内容" + Html);
/***
问题:有什么方法可以确保到这一行时Html是有内容的
即:我试过异步方法将GetHtml()异步,但效果不明显,我猜测是
DocumentCompleted事件本身相对于GetHtml就是异步的。
相当于 GetHtml()异步一次,而DocumentCompleted事件又异步一次
*****/
}
private void GetHtml()
{
WebBrowser webBrowser1 = new WebBrowser();
string URL = " http://blog.sina.com.cn/s/blog_af65d54c0102yg85.html ";
webBrowser1.Navigate(URL);
webBrowser1.DocumentCompleted += (object sender1, WebBrowserDocumentCompletedEventArgs e1) =>
{
HtmlElement html = webBrowser1.Document.Body;
string str = html.OuterHtml;
MessageBox.Show("这是网页加载完成后的内容"+str);
webBrowser1 = null;//此句目的是为了防止多次运行
};
}
}
}
MessageBox.Show("这是GetHtml()函数运行后的内容" + Html);
这句代码, 此时Html的内容为空;MessageBox.Show("这是网页加载完成后的内容"+str);
这句代码,这才是我要的内容,但我在主函数Form1()中却永远无法获得