使用WebForm_DoPostBackOptions和WebForm_DoPostBackWithOptions调用HTML按钮单击

时间:2018-06-19 22:27:27

标签: javascript c# html winforms webbrowser-control

我有一个带有窗体的Windows窗体应用程序,该窗体上具有一个webbrowser控件。在webbrowser控件的html主体中,有一个按钮我正在尝试调用click事件html标签

<input name="ctl00$MainContentPlaceHolder$ctl00$FilterButton" class="MPPBtn" id="ctl00_MainContentPlaceHolder_ctl00_FilterButton" 
onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContentPlaceHolder$ctl00$FilterButton", "", true, "", "", false, true))' type="button" value="Filter">

我已经获得了获取按钮并调用click事件的代码

   HtmlElement filterBtn = webBrowser1.Document.GetElementById("ctl00_MainContentPlaceHolder_ctl00_FilterButton");
   filterBtn.InvokeMember("Click");

我的问题是,通过代码调用click事件时,其行为与在chrome等常规浏览器中单击时的行为不同。我认为这可能是因为javascript:WebForm_DoPostbackoption

onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContentPlaceHolder$ctl00$FilterButton", "", true, "", "", false, true))'

我已经环顾四周,发现可能必须调用javascript:webform_dopostback,但这并不是很有意义,因为我认为一旦您获得按钮并调用click事件,那您就可以了?但是我尝试添加调用脚本,但无济于事

webBrowser1.Document.InvokeScript("WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl00$MainContentPlaceHolder$ctl00$FilterButton', '', true, '', '', false, true))");

有人可以解释我应该做什么或如何处理WebForm_DoPostBackWithOptions吗?

1 个答案:

答案 0 :(得分:0)

我添加了以下代码行

            HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
            HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
            IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
            element.text = "function Filter() { javascript: WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('id of element', '', true, '', 'url', false, true)) }";
            head.AppendChild(scriptEl);
            webBrowser1.Document.InvokeScript("Filter");