0

введите сюда описание изображенияНе добавляется элемент в List(of Custom Class) из функции webcontrol.WebView.BeforeRequestLoad

 Private Sub Captcha_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        webcontrol = New WebControl
        webcontrol.WebView = New WebView
        webcontrol.WebView.Engine = engine
        webcontrol.Dock = DockStyle.Fill
        Panel1.Controls.Add(webcontrol)
        webcontrol.WebView.LoadHtml("http://google.com")
        Form1.UC_tasks1.CaptchaKeysList.Add(New CaptchaKey("Test1", 10))
        AddHandler webcontrol.WebView.BeforeRequestLoad, AddressOf BeforeRequestLoad
    End Sub

    Public Sub BeforeRequestLoad(sender As Object, e As BeforeRequestLoadEventArgs)
                Form1.UC_tasks1.CaptchaKeysList.Add(New CaptchaKey("Test", 10))
    End Sub

    Public Class CaptchaKey
    Public Key As String
    Public Time As Integer
    Sub New(Key As String, Time As Integer)
        Me.Key = Key
        Me.Time = Time
    End Sub
    End Class

Зеленым работает, красным - нет

KR3ND31
  • 15
  • Код стоит приводить в виде кода, а не в виде скриншота. Воспользуйтесь отладчиком и посмотрите что происходит - может быть у вас обработчик вообще не вызывается, или один из IF внутри не срабатывает. –  Jun 03 '18 at 20:27
  • Все срабатывает и If тоже – KR3ND31 Jun 04 '18 at 11:46
  • Скорее всего BeforeRequestLoad вызывается в фоновом потоке (правда, тогда ваш код должен бросать ошибку, а не просто не работать). Оберните работу с контролами в Invoke: https://ru.stackoverflow.com/questions/418461/ –  Jun 04 '18 at 11:52
  • PashaPash, видимо отладка не показывает ошибку, потому что переменная то общая, но тогда непонятно почему не добавляется в list(of ), спасибо, инвок сработал) – KR3ND31 Jun 04 '18 at 13:38
  • Запостил как ответ –  Jun 04 '18 at 15:06

1 Answers1

0

Судя по всему, Событие BeforeRequestLoad вызывается в фоновом потоке, из которого нельзя работать с контролами на форме.

Оберните работу с Form1.UC_tasks1.CaptchaKeysList в вызов Form1.Invoke.