我有一个简单的C#应用程序,其中包含按钮和Web浏览器,每个按钮执行一个请求并在Web浏览器上显示请求的结果。并在下一个按钮中使用请求的结果。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.test.com");
}
private void button2_Click(object sender, EventArgs e)
{
if (webBrowser1.Document.GetElementById("tesxtbox1") != null)
{
HtmlElement txt1 = webBrowser1.Document.GetElementById("tesxtbox1");
txt1.SetAttribute("value", "test");
webBrowser1.Document.Forms[0].InvokeMember("submit");
}
}
是否有任何方法或方法只需单击即可执行两个按钮,但第二个按钮在加载Web浏览器之前不会执行。
在第一个按钮中,我添加了
webBrowser1.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler (Button2_Click);
但是第二个按钮多次出现,所以我在按钮2的最后一行添加了:
webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler (Button2_Click);
它可以工作,但在控制台中我发现按钮2执行了两次
提前致谢!
答案 0 :(得分:3)
你不应该认为执行第二个按钮点击。有DocumentCompleted事件你必须听,然后执行必要的代码。
答案 1 :(得分:3)
private void button3_Click(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += (sender, e) => {button2_Click(sender, e);};
button1_Click(sender, e);
}
将在button1_Click()触发完全加载文档后注册要执行的button2_Click方法。
答案 2 :(得分:1)
您可以通过button1_click方法进行以下调用。
button2_Click(sender, e);
答案 3 :(得分:1)
您应该添加一个事件,在文档完成加载后调用代码。
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
button2_Click(sender, e);
}
答案 4 :(得分:-3)
您可以在网址中提供参数:
webBrowser1.Navigate("http://www.test.com?excuteSecondButton=Yes");
然后在第二页上检查是否给出了该参数:
PageLoad()
{
if(Request.QueryString["executeSecondButton"].Equals("Yes"))
{
button2_Click(button2, new RoutedEventArgs());
}
}