Gå til innhold

VB.NET (2005) tabcontrol problem


Anbefalte innlegg

Vel. Jeg prøver å lage en tabcontrol basert nettleser. Problem er at jeg sliter med å få webbrowser kontrollen i den aktive tabben til å navigere..

 

//dette er det som skjer når jeg trykker på "ny tab" knappen//
   Public i As Integer
   Dim Browsercollection As New ArrayList
   Dim w As New WebBrowser       
   Dim t As New TabPage
       t.Controls.Add(w)
       Browsercollection.Add(w)
       TextBox1.Width = (Me.Width / 2)
       w.Dock = DockStyle.Fill
       w.Navigate("about:blank")
       t.Text = "Blankpage " & i
       TabControl1.Controls.Add(t)
       i = i + 1

 

Dette gjør at når jeg trykker på den, så kommer det en ny tabpage med en nettleser i.

 

Over tabcontrollen har jeg en textbox og en knapp. Det jeg sliter med er at når jeg trykker på go-knappen så vil jeg at webbrowseren i den aktive tab'en navigeres. Hittil er det nærmeste jeg har kommet å få navigert en tab, men da forsvant nettleseren fra en annen tab..

 

så jeg trenger litt hjelp på

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Lenke til kommentar
Videoannonse
Annonse

EDIT: slettet. var ikke rett

 

.Tag egenskaper på alle kontroller er en super ting å bruke.

 

I dette tilfelle kan du la .Tag egenskapen på hver TabPage peke til WebBrowser kontrollen din.

 

Dermed så kan du raskt finne rett WebBrowser kontroll på den aktive TabPagen:

 

      t.Controls.Add(w)
      Browsercollection.Add(w)
      TextBox1.Width = (Me.Width / 2)
      w.Dock = DockStyle.Fill
      w.Navigate("about:blank")
      t.Text = "Blankpage " & i
      t.Tag = w; //Sett referansen til webkontrollen i Tag'en
      TabControl1.Controls.Add(t)

 

I button click

WebBrowser activeBrowser = (WebBrowser)tabControl1.SelectedTab.Tag;

Der der var csharp kode. Usikker på hvordan man caster i .Net igjen, men det funker vel med

WebBrowser activeBrowser = tabControl1.SelectedTab.Tag as WebBrowser

Endret av wolf5
Lenke til kommentar

EDIT:

 

Nå har jeg følgende:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim activeBrowser As New WebBrowser
       activeBrowser = TabControl1.SelectedTab.Tag
       activeBrowser.Navigate(TextBox1.Text)

 

Dim t As New TabPage

       t.Controls.Add(w)
       Browsercollection.Add(w)
       TextBox1.Width = (Me.Width / 2)
       w.Dock = DockStyle.Fill
       w.Navigate("about:blank")
       t.Text = "Blankpage " & i
       t.Tag = w 'Sett referansen til webkontrollen i Tag'en'
       TabControl1.Controls.Add(t)

 

Dette funker ikke.. samme skjer, når jeg åpner en tab får jeg opp en tab med et browser vindu, men når jeg åpner enda en forsvinner den fra den første..

 

EDIT: jeg fikk det til. var bare en slurvefeil på min side :)

Endret av Earth657
Lenke til kommentar

Men hvordan får jeg til WebbrowserNavigating events? Unnskyld, er litt grønn når det gjelder .NET, men noe sånt som

Private Sub ActiveBrowser_Navigating(ByVal sender As System.Object, ByVal e As System.EventArgs)

Bare som fungerer.. for det gjør ikke den :)

 

Takk!

Lenke til kommentar

Legg "Handles " bakom deklarasjonen av funksjonen

Private Sub ActiveBrowser_Navigating(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WebBrowser1.Navigating
End Sub

 

Når du skriver Handles så kommer det opp en valg av hva du skal lytte på. Jeg tok WebBrowser1.Navigating i eksemplet, men det er mange flere hendelser på WebBrowser1.

 

Vet ikke om VB.NET har en like hending måte å gjøre dette på som i C#. I C# skriver man bare objektnavn.hendelsesnavn += (fulgt av tab 2 ganger så fylles resten av linjen ut og en ferdig funksjon blir opprettet)

Lenke til kommentar

Tror de forskjellige webkontrollene må deklareres globalt i VB.Net for å ha hendelser... (?)

 

De skal ihvertfall deklareres noe slikt

Dim withevents mywebbrowser as WebBrowser

 

Prøv å se om det virker inni en funksjon som du har gjort det. Ellers må du få dem ut som globale variabler. Evt en Liste eller array.

 

Eller du får ta hoppet over i C# :-) Holdt bare på med VB.NET et års tid før jeg gikk over til C# og holder meg der.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...