vb.net 由于其保护级别,它可能无法访问

标签 vb.net login error-handling browser webbrowser-control

表格 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 .
  • 您需要访问您的 网络浏览器1 使用 表格1 (因为您的 WebBrowser1 位于您的 Form1

  • 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/

    相关文章:

    web-applications - 跨多个网站的透明单点登录

    sql-server - SQL Server 2005 中 'CREATE USER' 所需的权限?

    php - Laravel 4多语言错误消息

    php - error_log无法正常工作

    c# - Windows 应用商店应用程序中 XAML 网格中的图像重叠

    javascript - vb 中的 Javascript .map 等价物是什么?

    login - 如何在我的网站上获取 Facebook 的 APP ID?

    Python 可以运行 while 循环直到 RuntimeError : maximum recursion depth exceeded while calling a Python object

    c# - RangeValidator 货币值小数点后不能超过 2 位?

    c++ - 将整数从 VB.Net 传递到 C++ dll