C#中第二行代码在第一行之前执行

3

我正在使用以下代码。我想要在C#网页浏览器控件中导航到一个网页,然后点击一个按钮。但是,在我能够导航到网页之前,点击就被调用了,导致出现空异常。

webBrowser1.Navigate("www.remaxit.com/members"); // way before this
deleted = true;
HtmlDocument doc = this.webBrowser1.Document;
doc.GetElementById("AddUser").InvokeMember("CLICK"); //This executes

任何帮助都将不胜感激。


4
我从未在C#中使用过Web浏览器工具,但我认为“Navigate”是非阻塞的。你可能想寻找类似于“OnLoad”的事件或其他类似的内容,并在页面加载后调用你的逻辑。 - Rob
1个回答

11

第一行代码执行了,但在运行其余代码之前它并没有完成页面的加载。

可以尝试这样做:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlDocument doc = this.webBrowser1.Document;
    doc.GetElementById("AddUser").InvokeMember("CLICK");
}

页面加载完成后,此代码将触发一个事件。


有没有其他方法?因为我正在使用计时器条件来查看计时器是早上还是晚上。根据时间,我导航到的网页将不同。 - CyraX6
1
@CyraX6 你可以在事件处理程序中检查一些条件吗? - adjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接