表格 1 代码:
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate("http://www.----------.org/login.php?")
WaitForPageLoad()
WebBrowser1.Document.GetElementById("username").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("login").InvokeMember("Click")
End Sub
模块代码:
Private Property pageready As Boolean = False
区域“页面加载功能”
Private Sub WaitForPageLoad()
AddHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
While Not pageready
Application.DoEvents()
End While
pageready = False
End Sub
Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
pageready = True
RemoveHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
End If
End Sub
结束区域
所以我在互联网上搜索一个可以让 webbrowser1 在继续下一个代码之前完全加载的模块,我在 How to wait until WebBrowser is completely loaded in VB.NET? 找到了代码,但我在可访问性方面遇到了一些问题,(在模块 WebBrowser1.* 和主窗体上)它说没有声明,并且由于其保护级别可能无法访问。
我是编程新手,希望有人可以帮助我。
这是图片链接
http://s18.postimg.org/8qokcnzh5/Untitled.jpg
最佳答案
您的保护级别错误是因为您必须访问功能WaitForPageLoad()
在您的模块中等待页面加载 来自 Form1 的按钮单击事件
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate("http://www.----------.org/login.php?")
WaitForPageLoad.WaitForPageLoad() 'Example: ModuleName.FuncionOrMethodName()
WebBrowser1.Document.GetElementById("username").SetAttribute("value", TextBox1.Text)
WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("login").InvokeMember("Click")
End Sub
WaitForPageLoad()
公众 所以你可以从 访问它表格1 . 新
WaitForPageLoad()
Public Sub WaitForPageLoad()
AddHandler Form1.WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
While Not pageready
Application.DoEvents()
End While
pageready = False
End Sub
Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
If Form1.WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
pageready = True
RemoveHandler Form1.WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
End If
End Sub
关于vb.net 由于其保护级别,它可能无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17639862/