指定的强制转换无效 - HTMLDocument

时间:2013-07-23 23:25:26

标签: c# .net

我正在尝试使用此代码段来测试元素是否具有特定文本。

HtmlDocument element = webBrowser2.Document;

if (element.GetElementById("gbqfsa").InnerText == "Google Search")
{
     HasSucceeded = 1;
}
return HasSucceeded;

但是第一行抛出异常“指定的强制转换无效”。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您是否可能使用了错误的HtmlDocument类? WebBrowser.Document的类型为:

System.Windows.Forms.HtmlDocument

但我注意到还有另一个可能的命名空间:

System.Windows.Browser.HtmlDocument

我会检查以确保您包含的名称空间为System.Windows.Forms.HtmlDocument

答案 1 :(得分:0)

从自定义用户控件将HtmlDocument作为属性返回时,我遇到了此问题。 (哪个嵌入式WebBrowser控件)

由于从其他线程访问文档而导致错误。

/// <summary>
/// Error version '
/// </summary>
public HtmlDocument Document
{
    get
    {
        // Throw error 'Specified cast is not valid'
        return this.webBrowserMain.Document; 
    }
}

但是我不知道为什么错误不是'CrossThread Operation access ...',但是下一个代码解决了我的问题

/// <summary>
/// Fixed version
/// </summary>
delegate HtmlDocument DlgGetDocumentFunc();
public HtmlDocument GetDocument()
{
    if(InvokeRequired)
    {
        return (HtmlDocument)this.webBrowserMain.Invoke(new DlgGetDocumentFunc(GetDocument), new object[] { });
    }
    else
    {
        return this.webBrowserMain.Document;
    }
}