2012-07-04 40 views
3

我使用DocumentComplete事件來自動完成表單。除了複選框,一切都正常。的HTML代碼如下:WebBrowser控件:單擊將不起作用

<span class="myClass" style="padding-left: 12px; vertical-align: bottom; cursor: pointer;"> 
<input id="ich_liebe_dich" type="checkbox" name="ich$liebe$dich"> 
<label for="ich_liebe_dich"> MyLabel</label> 
</span> 

我嘗試使用:

webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click"); 

webbrowser.Document.GetElementById("ich$liebe$dich").InvokeMember("click"); 

和也:

foreach (HtmlElement current in webbrowser.Document.GetElementsByTagName(tag)) 
{ 
    if (current.GetAttribute(attr).Equals(attName)) 
     current.InvokeMember(invoke); 
} 

其中attr = 「ID」, tag =「input」,invoke =「click」,attName =「ich_lieb e_dich「或」ich $ liebe $ dich「。

我得到的最好是一個短暫的 - 只是幾分之一秒 - 檢查複選框。爲什麼會發生?任何解決方案

+0

'InvokeMember( 「檢查」)'? – leppie

+0

@abatishchev:是 – pzogr

+0

@leppie:不工作... – pzogr

回答

1

leppie的回答讓我好奇,因爲我從來沒有讀過關於InvokeMember(「check」)的任何地方,並且我使用它搜索了它!我得到的第一個答案是這http://social.msdn.microsoft.com/forums/en-US/winforms/thread/750b11dc-08f8-4cb4-bcaf-80c91f0fd425/

我閱讀文章,發現一個解決方案... 如果我在DocumentCompleted事件上添加此行,那麼一切正常!

if (webbrowser.ReadyState==WebBrowserReadyState.Complete) 

看起來頁面有框架,並且DocumentCompleted事件在整個頁面加載之前觸發。

編輯:我忘了提,我使用(工作)的代碼如下:

webbrowser.Document.GetElementById("ich_liebe_dich").InvokeMember("click"); 
+0

+1爲找到解決問題的方法:) – leppie

1

我已經回答了similar question

webBrowser.Navigate( 「http://www.google.com」);

如果你有使用這個ID:

webBrowser1.Document.GetElementById("id").InvokeMember("click"); 

如果你有標記名使用此

webBrowser.Navigate("http://www.google.com"); 

在Web瀏覽器DocumentCompleted事件

HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0]; 
textElement.SetAttribute("value", "your text to search"); 
HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0]; 
btnElement.InvokeMember("click"); 

如果你有名稱類使用這樣的:在文本框中google.com使用

HtmlElementCollection classButton = webBrowser1.Document.All; 
foreach (HtmlElement element in classButton) 
{ 
    if (element.GetAttribute("className") == "button") 
    { 
     element.InvokeMember("click"); 
    } 
} 

的附加文本:

webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";