EVENTO ONCHANGE WEBBROWSER

ALTAIR148 25/01/2013 15:58:42
#418127
Boa tarde,

Pessoal, vou incomodar mais um pouco aqui. Nesse SITE, tem duas combobox que eu preciso seleciona-las, o problema é que tenho que selecionar a primeira e depois que ela for selecionada a segunda será carregada de acordo com a seleção da primeira, o que eu não estou conseguindo e fazer com que seja esperado a segunda ser carregada. Para selecionar a primeira eu uso o código baixo:


Dim theElementCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName([Ô]option[Ô])
For Each curElement As HtmlElement In theElementCollection
If curElement.InnerText = [Ô]Arapongas[Ô] Then
curElement.SetAttribute([Ô]selected[Ô], [Ô]selected[Ô])
End If
Next
Dim HtmlL As HtmlElement = WebBrowser1.Document.GetElementById([Ô]comarca[Ô])
HtmlL.RaiseEvent([Ô]onchange[Ô])
ALEVALE 25/01/2013 16:06:15
#418128
Não sei se ajudaria mas se existem 2 botões e o segundo é carregado atráves do primeiro, você pode tentar verificar se o 2 botão já se encontra no formulário dai você prossegue o seu código caso contrário você trata o erro.

OBS: Não sei como fazer isso só sugestão...rsrs

Quem sabe dá uma luz:

http://stackoverflow.com/questions/1912678/invalidcastexception-with-webbrowser-isbusy-or-readystate-vb-net
ALTAIR148 25/01/2013 16:08:56
#418129
Citação:

:
Não sei se ajudaria mas se existem 2 botões e o segundo é carregado atráves do primeiro, você pode tentar verificar se o 2 botão já se encontra no formulário dai você prossegue o seu código caso contrário você trata o erro.

OBS: Não sei como fazer isso só sugestão...rsrs



rsrs... Na verdade o que acontece é o seguinte, eu vou fazer dois tipos de pesquisa, alguns vão sim por onde você sugeriu, mas existe alguns números de processos que tem que ser pesquisado por essas combos ai.

Valeu ae.
PEGUDO 28/01/2013 08:31:22
#418169
Como seu único propósito é carregar o 2º ComboBox de acordo com a seleção da primeira, ficaria assim:
Dim Combo1 As HtmlElement = WebBrowser1.Document.GetElementById([txt-color=#e80000][Ô]comarca[Ô][/txt-color])
Dim Opcao1 As mshtml.IHTMLSelectElement = Combo1.DomElement

Opcao1.selectedIndex = 9 [txt-color=#007100][ô]Seleciona a comarca de Arapongas[/txt-color]
Opcao1.form.action = [txt-color=#e80000][Ô][/txt-color][txt-color=#0000f0]javascript:carregaCartorios([ô]/v2/cartorio/cartoriosDaComarca[ô])[/txt-color][txt-color=#e80000][Ô][/txt-color]
Opcao1.form.submit()

Como mostrei no exemplo, o Index 9 seleciona a comarca de Arapongas.
Outro modo de fazer esta seleção seria.
Opcao1.Value = 72

Isto porque, se você olhar no HTML da página, vai perceber que o número que corresponde à opção Arapongas é o nº 72.
Bom... Veja o que dá pra ser aproveitado e modifique à vontade.
ALTAIR148 28/01/2013 11:12:29
#418180
Citação:

Dim Combo1 As HtmlElement = WebBrowser1.Document.GetElementById([Ô]comarca[Ô])
Dim Opcao1 As mshtml.IHTMLSelectElement = Combo1.DomElement

Opcao1.selectedIndex = 9 [ô]Seleciona a comarca de Arapongas
Opcao1.form.action = [Ô]javascript:carregaCartorios([ô]/v2/cartorio/cartoriosDaComarca[ô])[Ô]
Opcao1.form.submit()



Essa parte funciona perfeitamente, o problema é quando eu rodo essa parte ai ai demora alguns instantes para carregar a segunda combo, eu queria ver se tem como tipo, passar para frente só depois que a segunda combo seja carregada.
PEGUDO 28/01/2013 11:20:51
#418181
Resposta escolhida
Você pode fazer alguma coisa como:
Dim Combo2 as HTMLElement = WebBrowser1.Document.GetElementById([txt-color=#e80000][Ô]cartorio[Ô][/txt-color])

While Combo2.InnerText = [txt-color=#e80000][Ô]Selecione o cartório[Ô][/txt-color]
Application.DoEvents()
End While

Ou algo parecido.
ALEVALE 28/01/2013 11:49:17
#418183
PEGUDO 28/01/2013 12:10:34
#418186
ALEVALE, não adiantaria porque a execução do comando provém de um Script (que roda no lado do usuário) e não do carregamento do WebBrowser (que vai ao provedor e atualiza a página).
Tópico encerrado , respostas não são mais permitidas