2016-11-19 9 views
1

C#WebControlを使用して、ドロップダウンコントロールで選択したオプションを変更したいと思います。C#WebBrowserコントロールでドロップダウンオプションを選択できないのはなぜですか?

HTMLは次のようになります。

<select data-dropdownify-type="month" data-dropdownify-label="Maand" name="birthday.month"> 
    <option value=""></option> 
     <option value="1">January</option> 
     <option value="2">February</option> 
     <option value="3">March</option> 
     <option value="4" selected="selected">April</option> 
     <option value="5">May</option> 
     <option value="6">June</option> 
     <option value="7">July</option> 
     <option value="8">August</option> 
     <option value="9">September</option> 
     <option value="10">October</option> 
     <option value="11">November</option> 
     <option value="12">December</option> 
    </select> 

私が最初にこのコードを使用してオプションを選択しようとしました:

br.Document.GetElementsByTagName("select").GetElementsByName("birthday.month")[0].SetAttribute("value", "2"); 

しかし、それは私のためにうまくいかなかった、私はすべてのエラーを見ていませんでした選択肢は変わりませんでした。

だから私は、インターネット上で探し始めたので、私はこのコードのオプション変更しようとし、これを行うための別の方法があるがわかった:

br.Document.GetElementsByTagName("select").GetElementsByName("birthday.month")[0].Children[2].SetAttribute("selected", "selected"); 

をしかし、これはどちらか動作しませんでしたが!再びエラーは見られませんでしたが、選択されたオプションは変更されませんでした。私はこれを行うことができる他の方法はありますか?私は多分それがdropdownifyとは関係があると思ったが、わからない。

+0

あなたはwinforms webbrowserまたはwebcontrolを意味しますか?あなたがWebブラウザを意味する場合、選択した要素を変更するコードはどこに置いていますか?それがWebブラウザコントロールのDocumentCompletedイベント(またはその後)にあることを確認してください – KMoussa

答えて

0

select要素からオプションを選択するには、selectedIndexを使用します。ここでは、この例では、アンマネージドMSHTMLライブラリを使用しました。 HTH

using System; 
using System.Linq; 
using System.Windows.Forms; 
using mshtml; 

// This code was written under the assumption that your form has a 
// WebBrowser control named WebBrowser1, 
// and that you have added the unmanaged MSHTML library as a reference to your project. 

namespace WebClientDemo 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      webBrowser1.Navigate(<your-url-here>); 
     } 

     private void webBrowser1_DocumentCompleted(object sender, 
              WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (webBrowser1.Document == null) 
       return; 
      IHTMLDocument2 iDoc = (IHTMLDocument2)webBrowser1.Document.DomDocument; 
      HTMLSelectElement selectElement = iDoc?.all.OfType<HTMLSelectElement>() 
            .FirstOrDefault(s => s.name == "birthday.month"); 
      if (selectElement != null) 
      { 
       selectElement.selectedIndex = 2; 
      } 
     } 
    } 
} 
関連する問題