2011-03-15 62 views
6

我有一個WebBrowser控件託管在windows Form中。該控件用於顯示在運行時創建的超鏈接。這些鏈接指向一些HTML頁面和PDF文檔。在C#應用程序中聚焦WebBrowser控件

問題是,當載入瀏覽器控件的表單被加載時,焦點在窗體上。當按下TAB鍵時,焦點不會轉移到第一個超鏈接。但是,如果我在控件上單擊鼠標,然後點擊按鍵,則標籤焦點現在位於第一個超鏈接上。我試着在WebBrowser控制上使用Select(),然後我打電話給Focus(),但它不能解決問題。

關於如何設置選項卡的任何想法集中在負載的第一個超鏈接?謝謝。

乾杯, 哈里什

回答

0

在正常情況下應該是夠你用的WebBrowser控制的TabIndex設置爲。這樣,當表單加載時,控件將被集中並按下TAB將遍歷鏈接。

請注意,您還應該更改窗體上其他控件的TabIndex

如果這不能解決您的問題,則需要在託管控件的表單的複雜性中添加更多詳細信息。

10

我想這可能是因爲焦點是在頁面完全加載之前設置的。試試這個:

private void Go(string url) 
{ 
    webBrowser1.Navigate(url); 
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
} 

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    webBrowser1.Document.Body.Focus(); 
} 

您也可以直接自動通過獲取該第一鏈接的HtmlElement選擇焦點的第一個鏈接。

如果上述不起作用,您可能需要檢查代碼的其他部分以查看是否有其他任何內容捕獲焦點。嘗試在您的代碼中搜索SelectFocusActiveControl

+0

這不會在目前的問題幫助:( – 2012-03-01 16:20:32

+0

如果我可能會問,這部分不幫?選擇WebBrowser控件並允許用戶使用TAB鍵選擇鏈接的示例代碼?或者說明需要使用第一個鏈接的HtmlElement設置焦點的部分?或者需要檢查的部分還有其他什麼東西在捕捉焦點?請告訴我哪一部分不清楚,如果需要,我會進一步解釋。謝謝。 – 2012-03-06 09:25:50

+0

@A shrafBashir,你能解釋一下當前的問題,我沒有幫助嗎? – 2012-03-06 09:29:42

1

使用form.ShowDialog(form)而不是form.Show(),那麼它將工作!
其中form是Windows的運行實例Form

1

這是我的解決方案

private void txtAdres_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    int licznik = 1; 
    if (e.KeyChar == (char)13) 
    { 
     string adres = txtAdres.Text; 
     webBrowser1.Navigate(adres); 
     licznik = 0; 
    } 
    if (licznik == 0) 
    { 
     webBrowser1.Focus(); 
    } 
} 
相關問題