在不同的类中调用sub不能正常工作

时间:2015-06-18 22:08:38

标签: vb.net winforms cefsharp

我正在使用Cefsharp在VB.Net中创建一个浏览器。我创建了一个自定义LifeSpanHandler来处理弹出窗口,但是当我尝试在另一个类中调用Public Sub时,它没有给出预期的输出。 我使用以下代码创建了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 = New LifeSpanHandler初始化。 (browserCefSharp.WinForms.ChromiumWebBrowser

我将targetURL保存在My.Settings.newpage中,然后在初始化浏览器时,它会打开该网址。在另一个类(和不同的表单)中,我有这个代码:

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中,当我Call Form1.IntNewTab()时,浏览器冻结了焦点。窗口显示为灰色(意味着它没有聚焦),我无法将其拖动,并且它始终位于其他所有位置之上,我无法与浏览器的任何部分进行交互。

为了测试其他内容,我向Form1添加了一个按钮,其中包含来自IntNewTab的确切代码,当我点击它时,它会像正常一样打开指定页面的新标签。我也试过让按钮可见,并OnBeforePopup添加Form1.Button1.PerformClick,但这也不起作用。其他人都有这方面的经验,或有任何建议吗?

编辑:

我在浏览器中添加了以下代码,试图摆脱默认实例(我理解的最好):

Form1

Module Program
Friend frmMain As Form1
End Module

Form1_Load

`frmMain = Me`

然后我在LifeSpanHandler中添加了此代码以反映更改:

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

这不起作用。它像以前一样不停地聚焦。我还尝试添加frmMain.IntNewTab()Form1_Load中的代码),但它仍无效。

0 个答案:

没有答案