2014-01-14 64 views
0

我一直在尋找這個問題的解決方案,但還沒有找到一個可行的解決方案。我有一個webBrowser控件。有多個下拉列表,其結構如下:c#在WebBrowser控件中的多個下拉列表中選擇單個項目

<select name="cars" multiple> 
    <option value="volvo">Volvo</option> 
    <option value="saab" SELECTED>Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi" SELECTED>Audi</option> 
</select> 

<p>Hold down the Ctrl (windows)/Command (Mac) button to select multiple options.</p> 

已經選擇了一些選項。我需要選擇其他選項,如「沃爾沃」 典型的做法是按住Ctrl鍵並右鍵單擊選項。我正在查看sendKeys類,但我不完全確定我做得對。 這是我曾嘗試:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option")) 
{ 
    if (item.InnerText == "Volvo") 
    { 
     item.Focus(); 
     SendKeys.Send("^(+)");//sends ctrl-space 
    } 
} 

它似乎並沒有給該項目的重點,所以我不知道,如果是的SendKeys工作與否。

我也試過這樣:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option")) 
{ 
    if (item.InnerText == "Volvo") 
    { 
     item.SetAttribute("SELECTED", ""); 
    } 
} 

...但是這似乎並沒有任何工作。
任何幫助表示讚賞

+0

更新:這選擇項目,但取消選擇過程中的所有其他項目... item.Parent.SetAttribute(「value」,「Volvo」); – smitty1

回答

0

好了,我不好意思地說,答案是非常簡單......

顯然setAttribute方法沒有考慮一個空字符串作爲第二個參數。這是工作的解決方案:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option")) 
{ 
    if (item.InnerText == "Volvo") 
    { 
     item.SetAttribute("SELECTED", "SELECTED"); 
    } 
} 
相關問題