C# 指定的强制转换无效-HTMLDocument

C# 指定的强制转换无效-HTMLDocument,c#,.net,C#,.net,我试图使用这个片段来测试一个元素是否有特定的文本 HtmlDocument element = webBrowser2.Document; if (element.GetElementById("gbqfsa").InnerText == "Google Search") { HasSucceeded = 1; } return HasSucceeded; 但是,第一行抛出异常“指定的强制转换无效”。我做错了什么?是否可能使用了错误的HtmlDocument类?WebBrowser

我试图使用这个片段来测试一个元素是否有特定的文本

HtmlDocument element = webBrowser2.Document;

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

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

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

System.Windows.Forms.HtmlDocument
但我注意到还有另一个可能的名称空间:

System.Windows.Browser.HtmlDocument

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

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

错误原因是从其他线程访问文档

/// <summary>
/// Error version '
/// </summary>
public HtmlDocument Document
{
    get
    {
        // Throw error 'Specified cast is not valid'
        return this.webBrowserMain.Document; 
    }
}
//
///错误版本'
/// 
公共HtmlDocument文档
{
得到
{
//抛出错误“指定的强制转换无效”
返回此.webBrowserMain.Document;
}
}
但我不知道为什么错误不是“交叉线程操作访问…”,但下一个代码解决了我的问题

/// <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;
    }
}
//
///固定版本
/// 
委托HtmlDocument DlgGetDocumentFunc();
公共HtmlDocument GetDocument()
{
如果(需要调用)
{
返回(HtmlDocument)this.webBrowserMain.Invoke(新DlgGetDocumentFunc(GetDocument),新对象[]{});
}
其他的
{
返回此.webBrowserMain.Document;
}
}

什么是
webBrowser2
?webBrowser控件。这可能是我的问题吗?如果我试图在已使用的
System.Windows.Forms.HtmlDocument
名称空间之外包含
System.Windows.Form
名称空间,则会出现错误。“using namespace指令只能应用于名称空间;“System.Windows.Forms.HtmlDocument”是一种类型,而不是名称空间。”