Για δες αυτό, μια πρόχειρη λύση που μου ήρθε στο μυαλό:
Dim i As IntegerDim browsers As New Hashtable Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
newpage()
End Sub
Sub newpage()
i = i + 1
Dim tab As New System.Windows.Forms.TabPage
tab.Name = "tab" & i.ToString
tab.Text = tab.Name
TabControl1.TabPages.Add(tab)
Dim browser As New AxSHDocVw.AxWebBrowser
browsers.Add(tab.Name, browser)
tab.Controls.Add(browsers(tab.Name))
AddHandler browser.ProgressChange, AddressOf ProgressChange
End Sub
Sub ProgressChange(ByVal sender As System.Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_ProgressChangeEvent) ProgressBar1.Value = e.progress
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim br As AxSHDocVw.AxWebBrowser = CType(browsers(TabControl1.SelectedTab.Name), AxSHDocVw.AxWebBrowser) br.Navigate2(TextBox1.Text)
End Sub
Το κόλπο είναι καθώς δημιουργείς δυναμικά τα browser controls πριν τα κάνεις add στο tab page να τα βάλεις σε ένα hash table.
Ως key για κάθε item που βάζεις στο hash table βάζεις το name property του νέου tab οπότε κατόπιν μπορείς μέσα από το SelectedTab.Name
να βρεις ποιό browser control βλέπει ο χρήστης.
Επίσης, άλλο ένα κόλπο είναι η δυνατότητα να συσχετίσεις δυναμικά ένα event με την ανάλογη ρουτίνα που θα καλείται, όταν τρέξει αυτό το event.
Αυτό γίνεται μέσω του AddHandler. Δυστυχώς είμαι στο τρέξιμο και δεν έχω χρόνο να συμμαζέψω τον κώδικα (πχ δεν έχω βάλει το ανάλογο RemoveHandler).
Κάνε τις δοκιμές σου και τα ξαναλέμε από Τρίτη!
Πάω για ![Paradise [ip]](/cs/emoticons/emotion-59.gif)
Vir prudens non contra ventum mingit