Vb.net 在不同的类中调用sub不正常

Vb.net 在不同的类中调用sub不正常,vb.net,winforms,cefsharp,Vb.net,Winforms,Cefsharp,我正在VB.Net中使用Cefsharp创建一个浏览器。我创建了一个自定义的LifeSpanHandler来处理弹出窗口,但是当我试图调用另一个类中的公共子类时,它没有给出预期的输出。 我使用以下代码创建了我的LifeSpanHandler: Public Class LifeSpanHandler Implements ILifeSpanHandler Public Event PopupRequest As Action(Of String) Public Function OnBefore

我正在VB.Net中使用Cefsharp创建一个浏览器。我创建了一个自定义的
LifeSpanHandler
来处理弹出窗口,但是当我试图调用另一个类中的公共子类时,它没有给出预期的输出。 我使用以下代码创建了我的
LifeSpanHandler

Public Class LifeSpanHandler
Implements ILifeSpanHandler
Public Event PopupRequest As Action(Of String)
Public Function OnBeforePopup(browser As IWebBrowser, sourceUrl As String, targetUrl As String, ByRef x As Integer, ByRef y As Integer, ByRef width As Integer, ByRef height As Integer) As Boolean Implements ILifeSpanHandler.OnBeforePopup
    RaiseEvent PopupRequest(targetUrl)
    My.Settings.newpage = targetUrl
    Call Form1.IntNewTab()
    Return True
End Function
Public Sub OnBeforeClose(browser As IWebBrowser) Implements ILifeSpanHandler.OnBeforeClose

End Sub
End Class
然后我有了
browser.LifeSpanHandler=newlifespanhandler
,在那里它被初始化。(使用
browser
作为
CefSharp.WinForms.ChromiumWebBrowser

我将
targetURL
保存在
My.Settings.newpage
中,然后当浏览器初始化时,它将打开到该URL。在不同的类(和不同的形式)中,我有以下代码:

Public Sub IntNewTab()
    Dim tab As New TabPage
    Dim newtab As New tabs
    newtab.Show()
    newtab.Dock = DockStyle.Fill
    newtab.TopLevel = False
    tab.Controls.Add(newtab)
    Me.CustomTabControl1.TabPages.Add(tab)
    Me.PictureBox1.Location = New System.Drawing.Point(PictureBox1.Location.X + 150, 3)
    My.Settings.newpage = My.Settings.homepage
    Me.CustomTabControl1.SelectedTab = tab
End Sub
这是添加新选项卡的代码。但是在我的
LifeSpanHandler
中,当我
调用Form1.IntNewTab()
时,浏览器会冻结在焦点之外。该窗口是灰色的(意味着它失去了焦点),我不能拖动它,它停留在所有其他东西的顶部,我不能与浏览器的任何部分进行交互

为了测试其他内容,我在
Form1
中添加了一个按钮,其中包含
IntNewTab
中的确切代码,当我单击它时,它会像正常情况一样打开指定页面的新选项卡。我还尝试让按钮保持可见,并在弹出前添加
Form1.Button1.PerformClick
,但这也不起作用。还有谁有这样做的经验,或者有什么建议吗

编辑:

我在浏览器中添加了以下代码,以尝试删除默认实例(这是我最了解的):

表格1

Module Program
Friend frmMain As Form1
End Module
表格1\u加载中

`frmMain = Me`
然后,我在
LifeSpanHandler
中添加了此代码以反映更改:

Dim mainFrm = New Form1()
    mainFrm.IntNewTab()

但这并没有起作用。就像以前一样,它一直冻结在焦点之外。我还尝试添加了
frmMain.IntNewTab()
(位于
Form1\u Load
中的代码),但仍然无法工作。

使用默认表单实例可能是问题所在。看起来不应该这样,但也许…@你什么意思?你是在说把Form1改成其他东西吗?@Proputix我尽我所能理解它,并对我的原始问题进行了编辑。你可能需要重新整理到
UI
线程
LifeSpanHandler
正在一个
CEF
线程中运行。