0

所以基本上我试图从控制台应用程序中触发 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 运行良好,所以对我来说有点奇怪。

4

1 回答 1

0

您应该使用以下InvokeMember()方法HtmlElement

 HtmlElement selectType = gDoc.GetElementById("xxx");
 selectType.InvokeMember("change");
于 2018-09-18T15:42:33.983 回答