如何在Web浏览器中将字符串插入组合框?

时间:2014-02-20 15:08:02

标签: c# string winforms

我在C#中创建了一个带有一些文本框的winforms应用程序。 一个用于名称,一个用于主题,一个用于消息。 一切都有效,除了网站上的组合框(下拉列表)。

就是这样:

  1. [包含文字的下拉列表]

    1. 博士
    2. 先生
    3. 小姐等......
  2. [名称] 输入名称

  3. [主题] 在此处输入主题

  4. [信息] 在此处输入消息

  5. 我想以编程方式将我的文本字符串插入下拉列表中。我的意思是,如果我在我的应用程序中键入“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);
    

    但这不起作用,因为它是一个包含选项而不是文本框的列表。

3 个答案:

答案 0 :(得分:0)

我想我得到了一个解决方案。 如果我要在winforms应用程序中添加一个名称前缀准备好的组合框,那么请执行以下操作:

HtmlElement hField = webBrowser1.Document.GetElementById("name_prefix");
hField.SetAttribute("selectedIndex", "comboBox1.SelectedIndex");

答案 1 :(得分:0)

获得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");
    }
}

See this answer by John Koerner

答案 2 :(得分:0)

尝试以下代码

HTMLSelectElement hfield = WebBrowser1.Document.GetElementsByTagName(“select”);

hfield.value = textbox1.text

或者

HTMLSelectElement hfield = WebBrowser1.Document.GetElementsById(“name_prefix”);

hfield.value = textbox1.text

注意:“包括mshtmlnamespacë”。