How to get TabItem to initialize content at boot time?

[disclaimer: I am new to Visual Basic.]

In WPF, I have a TabControl containing 2 TabItems:

The first TabItem contains a bunch of URLs.

The second TabItem element consists of a DockPanel that contains the cefSharp web view (chromium embedded for .net)

When I click on the url in tab1, it loads the page in the browser contained in tab2 ... But this only works if I first initialized the browser by clicking on tab2.

After doing the search, it looks like vb.net does not initialize the contents in the TabItem until it becomes visible. (on right?)

So my question is, how can I get an unselected tab to initialize its content when loading in the background? (i.e. so I don’t need to click on the tab or switch to it first)

EDIT:

As requested, here is the corresponding code:

The corresponding XAML consists of one DockPanel named "mainBox"

<DockPanel Name="mainBox" Width="Auto" Height="Auto" Background="#afe0ff" />

And here is my "code for" vb script:

Class MainWindow : Implements ILifeSpanHandler, IRequestHandler

    Shared web_view1 As CefSharp.Wpf.WebView
    Shared web_view2 As CefSharp.Wpf.WebView

    Public Sub init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Loaded

    'This is in a DockPanel created on the xaml named mainBox

        ' set up tabControl:
        Dim browserTabs As New TabControl()
        browserTabs.BorderThickness = Nothing

        Dim tab1 As New TabItem()
        tab1.Header = "My Tab"

        Dim tab2 As New TabItem()
        tab2.Header = "Browser"

        Dim tab1Content As New DockPanel()
        Dim tab2Content As New DockPanel()

        tab1.Content = tab1Content
        tab2.Content = tab2Content

        browserTabs.Items.Add(tab1)
        browserTabs.Items.Add(tab2)

        mainBox.Children.Add(browserTabs)

        ' set up browsers:
        Dim settings As New CefSharp.Settings()
        settings.PackLoadingDisabled = True

        If CEF.Initialize(settings) Then

            web_view1 = New CefSharp.Wpf.WebView()
            web_view1.Name = "myTabPage"
            web_view1.Address = "http://stackoverflow.com/"

            web_view2 = New CefSharp.Wpf.WebView()
            web_view2.Name = "browserPage"
            web_view2.Address = "https://www.google.com"
            web_view2.LifeSpanHandler = Me
            web_view2.RequestHandler = Me

            AddHandler web_view2.PropertyChanged, AddressOf web2PropChanged

            tab1Content.Children.Add(web_view1)
            tab2Content.Children.Add(web_view2)

        End If

    End Sub
End Class

So, in the default state, tab1 is displayed at startup - the browser on tab2 (web_view2) will not be initialized until I click on the tab or go to the tab using the script. Hope this clears up a bit.

+4
source share
2 answers

Windows Forms TabPage, , ,

, , TabPage, , , , . , TabPage.Show() .

MSDN

, , .

tab2.isEnabled = True
tab1.isEnabled = True

:

tab2.Visibility = True
tab1.Visibility = True

, BeginInit Method .

+5

, , , (tabName1.show()) , , :

tabPage2.show()
tabPage3.show()
tabPage4.show()
tabPage5.show()
tabPage1.show()

, , , . Visual Studio 2010.

+2

All Articles