C# 如何在WPF中获取webbrowser控件输入框的值?
我添加了Microsoft.mshtml作为我的项目的参考,并取得了以下成就:C# 如何在WPF中获取webbrowser控件输入框的值?,c#,html,wpf,browser,C#,Html,Wpf,Browser,我添加了Microsoft.mshtml作为我的项目的参考,并取得了以下成就: mshtml.IHTMLDocument2 document = (mshtml.IHTMLDocument2)webbrowser.Document; string username = document.all["username"].GetAttribute("value"); 但是第二行不行。上面说 错误CS0021:无法将[]索引应用于类型为的表达式 “mshtml.IHT
mshtml.IHTMLDocument2 document = (mshtml.IHTMLDocument2)webbrowser.Document;
string username = document.all["username"].GetAttribute("value");
但是第二行不行。上面说
错误CS0021:无法将[]索引应用于类型为的表达式
“mshtml.IHTMLElementCollection”
当鼠标悬停在“全部”上时。如何访问所有元素?尝试以下操作:
var document = (IHTMLDocument3) webbrowser.Document;
var value =
document.getElementsByName("username")
.OfType<IHTMLElement>()
.Select(element => element.getAttribute("value"))
.FirstOrDefault();
var document=(IHTMLDocument3)webbrowser.document;
var值=
document.getElementsByName(“用户名”)
第()类
.Select(element=>element.getAttribute(“值”))
.FirstOrDefault();
在挣扎了几个小时后,这个解决方案对我很有效
Dim document = DirectCast(MainBrowser.Document, IHTMLDocument3)
Dim formName = document.getElementsByName(AppSettings("myFormName")).OfType(Of IHTMLElement)().Select(Function(element) element.getAttribute("name")).FirstOrDefault()
它起作用了。我可以问一下你的真实想法吗?getElementsByName的结果被包装成我可以对其执行LINQ查询的内容,您可以使用它按类型IHTMlement过滤结果,然后仅选择value属性,然后获取第一个结果?这是对的还是这也是一些COM IHTMLDocument3功能?使用document.all是否也可以这样做,或者是否存在在c#中不起作用或不方便的原因?方法
getElementsByName
返回IHTMLElementCollection
,它实现了IEnumerable
接口,因此我们可以使用LINQ对其进行迭代。为此,我们应该将每个元素安全地强制转换为ihtmlement
document.all
还返回IHTMLElementCollection
,这意味着您可以用与上述方法相同的方法处理它。