2012-06-24 6 views
6

Я открываю веб-сайт в элементе управления WebBrowser с использованием VB.NET 2008. На четвертой странице веб-сайта я хочу сфокусировать управление, нажав клавишу табуляции программно. Я использую следующий код:Установите фокус на текстовое поле или кнопку HTML в элементе управления WebBroswer

If adtxt.Text = "http://aojsl.com/dfassfeed2.php" Then 
    System.Windows.Forms.SendKeys.Send("{TAB}") 
End If 

Однако мой код не может вызвать ключ табуляции. Кто-нибудь знает, как сделать эту работу?

+0

Что означает «мой код не может»? Вы получили сообщение об ошибке?Что именно происходит? Что он делает, когда вы используете отладчик с точкой останова на строке 'If adtxt.Text'? –

+0

Где вы размещаете этот код? – Ryan

+0

Не используйте ключ TAB, я найду более надежный метод для установки фокуса на элемент HTLM в элементе управления WebBrowser –

ответ

0

Метод 1

Private Sub Form_Load() 
    WebBrowser1.Navigate "http://www.google.com/" 
    Do 
    Thread.Sleep(100) 
    Loop While webBrowser1.IsBusy = True 
End Sub 

Private Sub Command1_Click() 
    WebBrowser1.Document.All("q").focus 'Set focus to the search text field 
End Sub 

Private Sub Command2_Click() 
    WebBrowser1.Document.All("btnI").focus 'Set focus to the google "I Am feeling lucky button" 
End Sub 

Метод 2

я преобразовал его в VB.Net из этого MSDN thread: Focus issues with System.Windows.Controls.WebBrowser

Вам нужно будет изменить ActiveElement в webBrowser.Document.ActiveElement.Focus() в текстовое поле или кнопку.

Public Partial Class Form1 
    Inherits Form 
    Public Sub New() 
    InitializeComponent() 
    Dim host As New WindowsFormsHost() 
    im webBrowser As New WebBrowser() 
    host.Child = webBrowser 
    elementHost1.Child = host 

    webBrowser.Navigate(New Uri("http://www.google.com")) 
    Me.Activated += Function() Do 
     Console.WriteLine(Me.ActiveControl) 
     If webBrowser.Document <> Nothing Then 
     If Me.ActiveControl = elementHost1 AndAlso webBrowser.Document.ActiveElement <> Nothing Then 
      webBrowser.Document.ActiveElement.Focus() 
     End If 
     End If 
    End Function 
    End Sub 
End Class 

Метод 3

Другой способ может быть, чтобы сделать это в HTML, например:

OnLoad="document.myform2.mybutton.focus();"> 
0

позволяет сказать, что HTML на Youre странице:

<button id="btn">Ok</button><input id="txt"> 


вы можете установить фокус таким образом:

If adtxt.Text = "http://aojsl.com/dfassfeed2.php" Then 
    webbrowser1.document.getelementbyid("btn").focus() 
    webbrowser1.document.getelementbyid("txt").focus() 
End If 
+0

, но моя программа не может получить идентификатор – user1473832

0

Другой способ:

использовать GetElementsByTagName(TagName)

позволяет сказать, что ваш HTML является:

<button>no</button> 
<button>no</button> 
<button onclick='alert(1);'>--focus me!--</button> 
<button>no</button> 



Dim Elems As HtmlElementCollection 
     Dim WebOC As WebBrowser = WebBrowser1 
     Elems = WebOC.Document.GetElementsByTagName("button") 
     For Each elem As HtmlElement In Elems 
      If elem.InnerHtml = "--focus me!--" Then 
       elem.Focus() 
       elem.InvokeMember("click") 

      End If 

     Next 


еще одно:

Dim num As Integer = 1 
     Dim elms As HtmlElementCollection 
     Dim wb As WebBrowser = WebBrowser1 
     elms = wb.Document.GetElementsByTagName("button") 
     For Each elem As HtmlElement In elms 
      If elem.Id = "" Then 
       elem.Id = "button" & num.ToString 
       num = num + 1 
      End If 
     Next 

     WebBrowser1.Document.GetElementById("button3").Focus() 
+0

Они оба тоже не работают – user1473832

+0

дайте мне html вашей страницы, и я пытаюсь настроить свой код. – RedDm

+0

Я так думаю, что его решение является программным нажатием клавиши TAB. Но я не знаю код для запуска ключа TAB. Так может ли u plz сказать мне, как запускать нажатия клавиш TAb автоматически с помощью программного кода? – user1473832

0

Для фокусировки выберите элемент с помощью функции фокусировки в vb.net. Например,

Me.WebBrowser1.Document.All.Item("password").Focus() 

Это обратит внимание на элемент, называемый паролем!

Используйте Me.WebBrowser1.Document.All.Item("YOURelement"), чтобы найти нужный элемент, а затем добавить .Focus(), чтобы сфокусироваться на том, который вы хотите! : D

-1

ли это Me.WebBrowser1.Document.All.Item (TextBox1.Text) .Focus()

сделать Textbox, а затем, если вы хотите Spambot его легко Улавливает каждый ваш Typ вы Написать и отправить