C# 使用“错误”;webBrowser1.文档.窗口.框架“;

C# 使用“错误”;webBrowser1.文档.窗口.框架“;,c#,visual-studio-2010,iframe,webbrowser-control,C#,Visual Studio 2010,Iframe,Webbrowser Control,使用以下代码行尝试访问webBrowser控件中iFrame中的链接时 string Punch = webBrowser1.Document.Window.Frames("ContentFrame").Document.GetElementById("btnPunch"); 我收到以下错误,在单词“Frames”下面有一条红色的曲线 非可开票成员“System.Windows.Forms.HtmlWindow.Frames”不能像方法一样使用 谷歌今天不是我的朋友 添加了以下内容 我做了以下

使用以下代码行尝试访问webBrowser控件中iFrame中的链接时

string Punch = webBrowser1.Document.Window.Frames("ContentFrame").Document.GetElementById("btnPunch");
我收到以下错误,在单词“Frames”下面有一条红色的曲线

非可开票成员“System.Windows.Forms.HtmlWindow.Frames”不能像方法一样使用

谷歌今天不是我的朋友

添加了以下内容

我做了以下更改,发现我定位的是框架,而不是元素

        HtmlElement elem = webBrowser1.Document.Window.Frames["ContentFrame"].Document.GetElementById("btnPunch");

        if (webBrowser1.Document.Window.Frames == null)
        {
            MessageBox.Show("No frame found");
        }
        else
        {
            MessageBox.Show("Frame found");
        }

        if (elem == null)
        {
            MessageBox.Show("elem is empty");
        }
        else
        {
            MessageBox.Show("elem is not empty");
        }
如果我能找到我试图点击的元素,我会添加

.InvokeMember("click");

最后激活链接…

System.Windows.Forms.HtmlWindow.Frames是类型为
HtmlWindowCollection
的属性。您可以获得如下所示的所需帧:

webBrowser1.Document.Window.Frames["ContentFrame"]

因为您使用的是括号而不是方括号,所以编译器认为您正在尝试调用
窗口
对象上名为
Frames
的方法。

System.Windows.Forms.HtmlWindow.Frames
HtmlWindowCollection
类型的属性。您可以获得如下所示的所需帧:

webBrowser1.Document.Window.Frames["ContentFrame"]

因为您使用的是圆括号而不是方括号,所以编译器认为您试图在
窗口
对象上调用名为
Frames
的方法。

我也这样尝试过。现在我得到以下错误。。。无法将类型“System.Windows.Forms.HtmlElement”隐式转换为“string”,这是因为表达式(位于“=”符号右侧)的计算结果为
System.Windows.Forms.HtmlElement
,但您正试图将其分配给类型为
string
(变量“Punch”)的变量。也许您需要
GetElementById(“btnPunch”).InnerText
?(此外,您可能应该执行空检查,除非您知道文档总是具有您期望的确切结构。)我不知道innerText是我要找的。我在代码中的其他位置使用了innerHtml,并在单击链接时取得了巨大成功。但这一个是在一个iFrame和让我头痛。我在OP.中添加了更多信息。根据我们的对话,我尝试了一些东西。我希望有帮助。我也试过这样做。现在我得到以下错误。。。无法将类型“System.Windows.Forms.HtmlElement”隐式转换为“string”,这是因为表达式(位于“=”符号右侧)的计算结果为
System.Windows.Forms.HtmlElement
,但您正试图将其分配给类型为
string
(变量“Punch”)的变量。也许您需要
GetElementById(“btnPunch”).InnerText
?(此外,您可能应该执行空检查,除非您知道文档总是具有您期望的确切结构。)我不知道innerText是我要找的。我在代码中的其他位置使用了innerHtml,并在单击链接时取得了巨大成功。但这一个是在一个iFrame和让我头痛。我在OP.中添加了更多信息。根据我们的对话,我尝试了一些东西。我希望有帮助。