C# 从表单元格中检索信息
我正在从WPF应用程序读取WebBrowser控件中加载的页面 在这个页面中有一个数据表,我需要捕获它,我正在使用MSHTML 我可以检索表,我可以检索表中的行,我只是不能检索行中的单元格。我总是得到一个C# 从表单元格中检索信息,c#,wpf,visual-studio-2010,webbrowser-control,mshtml,C#,Wpf,Visual Studio 2010,Webbrowser Control,Mshtml,我正在从WPF应用程序读取WebBrowser控件中加载的页面 在这个页面中有一个数据表,我需要捕获它,我正在使用MSHTML 我可以检索表,我可以检索表中的行,我只是不能检索行中的单元格。我总是得到一个NullReferenceException 这就是我现在拥有的: foreach (var a in ((wbSocial.Document as HTMLDocument).getElementById("j_idt29:gridDadosTrabalhador").children as
NullReferenceException
这就是我现在拥有的:
foreach (var a in ((wbSocial.Document as HTMLDocument).getElementById("j_idt29:gridDadosTrabalhador").children as IHTMLElementCollection))
foreach (var b in (a as HTMLTableSection).rows)
if (((b as HTMLTableRow).cells as HTMLTableCell) == null || ((b as HTMLTableRow).cells as HTMLTableCell).nodeName.ToUpper() == "TH")
continue;
当我调试
HTMLTableRow
时,我看到HTMLTableRow
中有7个元素,但是如果我强制转换到HTMLTableCell
它会给我NullReferenceException
好的,我自己设法解决了它。我真的认为这与我的能力相去甚远。成功之后,我真的觉得自己很愚蠢
这就是我所做的:
foreach (var a in ((wbSocial.Document as HTMLDocument).getElementById("j_idt29:gridDadosTrabalhador").children as IHTMLElementCollection))
foreach (var b in (a as HTMLTableSection).rows)
{
if ((b as HTMLTableRow).rowIndex == 0) { continue; }
else
{
foreach (var c in (b as HTMLTableRow).cells)
为了修复它,您必须更改什么?很抱歉,回答了这么长时间。显然,
HTMLTableRow.cells
返回一个HTMLElementCollection
,每个HTMLElement
都可以强制转换为HTMLTableCell
。只是我没有引起注意。我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。