【问题标题】:vb.net it may be inaccessible due to its protection levelvb.net 由于其保护级别,它可能无法访问
【发布时间】:2013-07-12 11:15:04
【问题描述】:

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()
    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

【问题讨论】:

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


    【解决方案1】:

    您的保护级别错误是因为您必须从Form1的按钮单击事件中访问模块WaitForPageLoad中的函数WaitForPageLoad()

    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
    
    1. 您需要将您的WaitForPageLoad() public 设为您可以从 Form1 访问它。
    2. 您需要使用 Form1 访问您的 WebBrowser1(因为您的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多