gpt4 book ai didi

c# - 如何从 webBrowser 控件中的当前选定选项获取 innerText

转载 作者:太空狗 更新时间:2023-10-30 00:32:02 26 4
gpt4 key购买 nike

我需要选择 innerText来自 webBrowser 控件中当前选择的选项。

这是 html 的表示形式:

<SELECT ID="F8">
<OPTION VALUE="option1">option1</OPTION>
<OPTION VALUE="option2" selected>option2</OPTION>
<OPTION VALUE="option3">option3</OPTION>
</SELECT>

这是我正在尝试的:

if (webBrowser1.Document.GetElementById("F8") != null)
{
HtmlElement selectF8 = webBrowser1.Document.GetElementById("F8");
foreach (HtmlElement item in selectF8.Children )
{
if (item.GetAttribute("selected") != null)
{
assigneeText.Text = item.InnerText;
}
}
}

... 但它完全忽略 if 语句并始终分配 assigneeText.Text option3 的值而不是选择的值 option2 .

有人可以告诉我我做错了什么吗?

最佳答案

当您更改控件上的选择时,所选属性不会更新。它用于定义首次显示控件时选择的项目(默认选项)。

要获取当前选择,您应该调用 selectedIndex 方法来找出选择了哪个项目。

HtmlElement element = webBrowser1.Document.GetElementById("F8");
object objElement = element.DomElement;
object objSelectedIndex = objElement.GetType().InvokeMember("selectedIndex",
BindingFlags.GetProperty, null, objElement, null);
int selectedIndex = (int)objSelectedIndex;
if (selectedIndex != -1)
{
assigneeText.Text = element.Children[selectedIndex].InnerText;
}

如果您使用的是 C# 4,您还可以使用 DLR 来避免必须使用反射。

var element = webBrowser1.Document.GetElementById("F8");
dynamic dom = element.DomElement;
int index = (int)dom.selectedIndex();
if (index != -1)
{
assigneeText.Text = element.Children[index].InnerText;
}

关于c# - 如何从 webBrowser 控件中的当前选定选项获取 innerText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com