所以基本上我试图从控制台应用程序中激活WebBrowser的RaiseEvent,但它不起作用。在WinForms项目中它运行良好,所以我只是想知道我必须做些什么才能使它在控制台应用程序中运行。这甚至可能吗?
这就是我为WB创建线程的方法
private static Thread runBrowserThread(int mCandidatePosition)
{
var wbThread = new Thread(() => {
mClient = new WebClient();
mainWebBrowser.ScriptErrorsSuppressed = true;
mainWebBrowser.AllowNavigation = true;
mainWebBrowser.DocumentCompleted += MainWebBrowser_DocumentCompleted;
mainWebBrowser.Navigate(new Uri(xxx));
Application.Run();
});
wbThread.SetApartmentState(ApartmentState.STA);
return wbThread;
}
这就是我尝试这样做的方式:
HtmlElement selectType = gDoc.GetElementById("xxx");
selectType.RaiseEvent("onchange");
上面的代码在WinForms项目中运行良好,但在控制台应用程序中没有任何反应。另外,InvokeScript运行良好,所以对我来说有点奇怪。
你应该使用InvokeMember()
的HtmlElement
方法:
HtmlElement selectType = gDoc.GetElementById("xxx");
selectType.InvokeMember("change");