private void button1_Click_1(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.naver.com");
}
private void button2_Click_1(object sender, EventArgs e)
{
HtmlWindow wf = webBrowser1.Document.Window.Frames[0];
string s = wf.Document.Body.OuterHtml;
MessageBox.Show(s);
}
..这确实有效...但我需要点击两个按钮。 我想一起做。我写下面的代码...... 错误出现在第二行(nullReferenceException)。似乎等待不起作用 任何人都可以帮忙??
private async void button2_Click_1(object sender, EventArgs e)
{
await Task.Run(() => webBrowser1.Navigate("http://www.naver.com"));
HtmlWindow wf = webBrowser1.Document.Window.Frames[0];
string s = wf.Document.Body.OuterHtml;
MessageBox.Show(s);
}
答案 0 :(得分:1)
导航开始下载。它在下载完成之前返回。您将不得不等待事件WebBrowser.DocumentCompleted
顺便说一句,因为Navigate不会等到加载它很快,所以不需要异步调用它,否则微软会像在WebClient任务中那样建立一个异步版本。
private void button2_Click_1(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.naver.com");
}
private void OnDocumentCompleted(object sender, ...)
{
HtmlWindow wf = webBrowser1.Document.Window.Frames[0];
string s = wf.Document.Body.OuterHtml;
MessageBox.Show(s);
}
答案 1 :(得分:0)
如果您希望 button1 在 button1 事件上自动执行,那么您可以使用 Button.PerformClick方法 强>
所以,你的代码是这样的:
private void button1_Click_1(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.naver.com");
button2.PerformClick();
}
private void button2_Click_1(object sender, EventArgs e)
{
HtmlWindow wf = webBrowser1.Document.Window.Frames[0];
string s = wf.Document.Body.OuterHtml;
MessageBox.Show(s);
}
如果您想要一起工作,那么您可以使用加载事件
在表单加载上设置这些按钮点击事件public Form1()
{
InitializeComponent();
Load += button1_Click;
Load += button2_Click;;
}