以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于webbrowser控件加载完成问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64639)

--  作者:jspta
--  发布时间:2015/2/26 11:19:00
--  [求助]关于webbrowser控件加载完成问题
 以下代码本意是想当网页加载完成后(使用DocumentCompleted事件),使LoadReady由False变成True,然后跳出循环,目的是函数结束时,返回一个数组。
但是在循环体或者说整个过程中LaodReady一直是False除非触发了messagebox才会变True,如何解决?
Dim n As Integer = 0
            Do Until n > 5
                If LoadReady = True Then
                    Exit Do
                Else
                    System.Threading.Thread.Sleep(2000)
                    n = n + 1
                    If n > 5 Then
                        MessageBox.Show("查询失败,请确保网络正常后,重新尝试")
                    End If
                End If
            Loop
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页测试.foxdb


[此贴子已经被作者于2015/2/26 12:56:46编辑过]

--  作者:Bin
--  发布时间:2015/2/26 11:20:00
--  
参考这个例子, 有个加载完成事件


--  作者:有点甜
--  发布时间:2015/2/26 11:24:00
--  
 为什么不直接在 DocumentCompleted 事件处理?
--  作者:有点甜
--  发布时间:2015/2/26 11:29:00
--  

 测试了一下,只要改变了 LoadReady 的值,没有你说的那种情况。

 

 具体问题,请上传例子。


--  作者:jspta
--  发布时间:2015/2/26 11:31:00
--  
以下是引用有点甜在2015/2/26 11:24:00的发言:
 为什么不直接在 DocumentCompleted 事件处理?
如果挂在DocumentCompleted 事件中,如何在事件结束时,返回一个值?或者说如何在事件过程中赋值,并在事件结束后,把这个值返回个调用者?
        Sub DocumentCompletedEventHandler(ByVal sender As System.ObjectByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgsHandles _WebBaseControl.DocumentCompleted
            Dim web As System.Windows.Forms.WebBrowser = sender
            If web.ReadyState = System.Windows.Forms.WebBrowserReadyState.Complete Then 
                Dim doctext As String = web.DocumentText.Replace("""""")
                If doctext.Contains("status:201"Then 
                    
                Else
                    JsonText = web.DocumentText \'为了获得这个值,并执行一定的代码,最终返回执行后的一个数组?有什么办法可以获得,或者通知程序这个已经执行完成了?
                    LoadReady = True
                End If
            End If
        End Sub


--  作者:Bin
--  发布时间:2015/2/26 11:32:00
--  
你直接在这里写上你完成操作需要处理的代码即可
--  作者:有点甜
--  发布时间:2015/2/26 11:44:00
--  

 直接设置 LoadReady 的值啊,循环判断 LoadReady 的值即可,肯定是可以的。

 

 不行,你就做个例子上来。


--  作者:jspta
--  发布时间:2015/2/26 12:58:00
--  
上传了附件了,请帮忙下。就是需要立即获得,并且要继续处理。而不是点击Button2
--  作者:Bin
--  发布时间:2015/2/26 14:08:00
--  
没有问题的啊.正常获取值,获得之后你继续把操作代码写到里面去即可
--  作者:jspta
--  发布时间:2015/2/26 14:16:00
--  
以下是引用Bin在2015/2/26 14:08:00的发言:
没有问题的啊.正常获取值,获得之后你继续把操作代码写到里面去即可
点击BUTTON1 第一个message弹出的时候就是空白啊,必须在事件中弹出message,才会使JsonText这个变量有值。