通过WebBrowser控件取消选中网页中的复选框

时间:2009-11-05 14:00:04

标签: c# .net winforms checkbox webbrowser-control

有没有办法取消选中/选中webbrowser控件中加载的网页中的复选框?谢谢。

更新:(这是我最初尝试过的,没有运气)

HtmlDocument rememberme = this.webBrowser1.Document;
rememberme.GetElementById("remBox").SetAttribute("checked", "false");

5 个答案:

答案 0 :(得分:5)

您可以使用:

webBrowser.Document.InvokeScript

请参阅:

InvokeScript

通过这种方式,您可以调用JS函数来执行您想要的页面。

另一种方法是使用mshtml API,如下所示: ( ( HTMLInputElement )this.webBrowser1.Document.GetElementById( "test" ).DomElement ).@checked = false;

答案 1 :(得分:1)

您可以使用HTML元素的InvokeMember方法来调用DOM事件。在我们的例子中“点击”。如果你有一个WebBrowser控件,那么你需要做的就是找到元素并调用方法。

For Each ele As HtmlElement In Me.WebBrowser1.Document.All
        If ele.Name = "accept" Then
            ele.InvokeMember("click")
        End If
Next

在我的例子中,'accept'是复选框元素的名称。您可以将SetAttribute()用于其他一些控件,但模拟单击的最佳方法是使用GetAttribute()查找复选框状态,如果复选框设置为false,则单击。希望它有所帮助。

答案 2 :(得分:0)

在javascript中,您应该能够使用clientId设置.checked = false。

答案 3 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.invokescript.aspx 你需要分析页面结构,找出如何找到复选框,并使用Myles的方法检查/取消选中javascript中的复选框。

答案 4 :(得分:0)

LONG版本是你必须使用DOM函数来查找你想要更新的控件的客户端ID,然后只需设置它的值。

如果没有其他人打败我,我可能会在你上班后为你找到一些示例代码......

编辑:

基本上你需要做的就是:

HTMLDocumentClass doc = webBrowserControl.Document as mshtml.HTMLDocumentClass;

HTMLInputElement input = doc.all.item("checkboxID", 0) as HTMLInputElement;

input.value ="false";  //Could be 0, not sure... 
//could also be input.@checked = false, sorry I haven't actually used this on a checkbox before... one of these should work though

所以是的,不知道为什么有人会通过编写JavaScript并在你用3行代码设置控件的值时调用它来完成所有工作。