我正在C#中制作一个有几个文本框的winforms应用程序。一个代表姓名,一个代表主题,一个则代表信息。除了网站上的combobox(下拉列表)外,其他一切都正常。
它是这样的:
-
[带单词的下拉列表]
- Dr
- Mr
- 夫人
- 小姐等等
-
[姓名]输入名称
-
[主题]在此处输入主题行
-
[消息]在此处输入消息
我想用程序将我的文本字符串插入下拉列表。我的意思是,如果我在应用程序中键入"mr",它应该找到"mr"然后检查列表项text="mr"是否继续。我该怎么做?我试着用索引来做这件事——这很有效,但这不太方便用户。索引从0开始,这就是我当前的代码:
HtmlElement hField = webBrowser1.Document.GetElementById("name_prefix");
hField.SetAttribute("selectedIndex", "1");
我想要一些类似的东西
HtmlElement hField = webBrowser1.Document.GetElementById("name_prefix");
hField.SetAttribute("selectedIndex", textbox1.Text);
但这并不奏效,因为它是一个包含选项的列表,而不是一个文本框。
我想我刚刚得到了一个解决方案。如果我要在我的winforms应用程序中添加一个已准备好名称前缀的组合框,那么请执行以下操作:
HtmlElement hField = webBrowser1.Document.GetElementById("name_prefix");
hField.SetAttribute("selectedIndex", "comboBox1.SelectedIndex");
一旦有了name_prefix元素,就可以循环浏览项目,直到找到合适的项目,然后选择它:
var ele = webBrowser1.Document.GetElementById("asdf");
if (ele != null)
{
foreach (HtmlElement child in ele.Children)
{
child.SetAttribute("selected", "false");
if (child.InnerText == "c")
child.SetAttribute("selected", "true");
}
}
请参阅John Koerner 的回答
请尝试以下代码而不是
HTMLSelectElement hfield=WebBrowser1.Document.GetElementsByTagName("select");
hfield.value=textbox1.text
或
HTMLSelectElement hfield=WebBrowser1.Document.GetElementsById("name_prefix");
hfield.value=textbox1.text
注意:"包含mshtml namespacë"。