Quand on manipule des objets HtmlElement obtenus via un WebBrowser, le code suivant est bien pratique pour déclencher l’évènement onclick dans la page web :
Vb
monHtmlElement.RaiseEvent("onclick")
C#
monHtmlElement.RaiseEvent("onclick");
Malheureusement ce code n’est pas Thread-Safe et déclenchera un erreur quand il serra lancé via un thread autre que celui qui a servi à instancier le WebBrowser.
Dans ces moment là on se dit qu’il n’y a rien de grave là dedans, on a un control winform, et donc ont peut utiliser sa méthode Invoke quand elle est requise (exemple : voir cet article)…
Oui, oui, c’est une idée, mais cela ne marche pas. Une erreur se produira quand même.
Pour s’en sortir : il faut utiliser la méthode InvokeMember du HtmlElement et surtout lui passer un argument. Sans argument une erreur peut se produire. Voici un exemple de code:
Vb
Dim param As New Object() monHtmlElement.InvokeMember("onclick", param)
C#
Object param = new Object(); monHtmlElement.InvokeMember("onclick", param);