PDA

View Full Version : [VB.NET] Navigazione a Schede


AGENT47
15-11-2009, 15:53
ciao ragazzi, è la prima volta che scrivo in questa sezione in quanto ho un problemone, sto creando un web browser con vb.net ed ora sto implementando la navigazione a schede, tutto funziona perfettamente solo che quando io clicco su aggiungi nuova scheda, il browser me l'aggiunge ma c'è sempre la pagina della prima scheda in tutte le schede.
vi posto sotto il codice che ho assegnato al pulsante e quello che ho assegnato all'interno del timer:

codice nel timer:

Dim browse As New WebBrowser
browse.Dock = DockStyle.Fill

TabControl1.SelectedTab.Controls.Add(browse)

codice nel pulsante:

TabControl1.TabPages.Add()

sperando in un vostro pronto aiuto vi ringrazio anticipatamente.

MarcoGG
16-11-2009, 08:35
Sarà molto difficile che qualcuno risponda concretamente alla tua richiesta.
Posta il tuo codice e magari descrivi meglio il problema.
Per ora sarei curioso di sapere a che ti serve un Timer per un browser a schede... :stordita:

VegetaSSJ5
16-11-2009, 08:38
piccola curiosità OT.
il webbrowser integrato in .net si appoggia a internet explorer?

MarcoGG
16-11-2009, 13:36
piccola curiosità OT.
il webbrowser integrato in .net si appoggia a internet explorer?

Sì, il controllo WebBrowser di .NET fa uso dell'engine di IE.
Perciò chi si butta nello sviluppo su WebBrowser pensando di costruirsi il "suo" browser indipendente, temo avrà brutte sorprese...

AGENT47
16-11-2009, 16:01
grazie per le vostre risposte, rispondo subito a te marcogg allora, ho inserito il timer in quanto ho visto così su di una guida.
per il webbrowser, lo so che usa l'engine di ie.
il codice sorgente, lo posto tra un po'
grazie ancora

AGENT47
20-11-2009, 15:01
scusatemi ragazzi, ma sono stato molto occupato: vi posto tutto il sorgente
ciao
Imports System.IO
Public Class Form1
Dim HTML As Object
Dim File As System.IO.StreamReader
Dim oRead As System.IO.StreamReader
Dim oWrite As System.IO.StreamReader
Dim RETEDISPONIBILE As Boolean
Dim OPEN As New OpenFileDialog()
Dim SAVE As New SaveFileDialog()
Dim VALUE As Boolean
Dim INSTANCE As New WebBrowser


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Timer1.Start()
CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(TextBox1.Text)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'pulsante indietro
WebBrowser1.GoBack()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'pulsante avanti
WebBrowser1.GoForward()
End Sub

Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
'avanzamento progress bar
ProgressBar1.Maximum = e.MaximumProgress
ProgressBar1.Value = e.CurrentProgress
TextBox1.Text = (WebBrowser1.Url.ToString)
End Sub

Private Sub OpzioniToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpzioniToolStripMenuItem.Click
frm_Opzioni.Show()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'pulsante home
WebBrowser1.Navigate(frm_Opzioni.Txt_Iniziale.Text)
End Sub

Private Sub SalvaPaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalvaPaginaToolStripMenuItem.Click
'pulsante salva pagina
WebBrowser1.ShowSaveAsDialog()
End Sub

Private Sub AnnullaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnnullaToolStripMenuItem.Click
'pulsante annulla
TextBox1.Undo()
End Sub

Private Sub TagliaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TagliaToolStripMenuItem.Click
'pulsante taglia
TextBox1.Cut()
End Sub

Private Sub CopiaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopiaToolStripMenuItem.Click
'pulsante copia
TextBox1.Copy()
End Sub

Private Sub IncollaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IncollaToolStripMenuItem.Click
'pulsante incolla
TextBox1.Paste()
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
'riconoscimento pulsante invio
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
WebBrowser1.Navigate(TextBox1.Text)
End If
End Sub

Private Sub TextBox1_MouseDoubleClick1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDoubleClick
TextBox1.SelectAll()
End Sub

Private Sub StampaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StampaToolStripMenuItem.Click
'pulsante stampa
WebBrowser1.ShowPrintDialog()
End Sub

Private Sub AnteprimaDiStampaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnteprimaDiStampaToolStripMenuItem.Click
'pulsante anteprima stampa
WebBrowser1.ShowPrintPreviewDialog()
End Sub

Private Sub EsciToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EsciToolStripMenuItem.Click
End
End Sub

Private Sub ApriIndirizzoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApriIndirizzoToolStripMenuItem.Click
frm_link.Show()
End Sub

Private Sub InformazioniToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InformazioniToolStripMenuItem.Click
frm_info.Show()
End Sub

Private Sub ControlloReteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ControlloReteToolStripMenuItem.Click
'contrllo disponibilità rete
RETEDISPONIBILE = My.Computer.Network.IsAvailable
If RETEDISPONIBILE = True Then
MsgBox("Rete Disponibile", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Else
MsgBox("Rete non Disponibile", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End If
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Me.Text = (WebBrowser1.DocumentTitle & " - Rubber Web Browser")
End Sub

Private Sub NotepadToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotepadToolStripMenuItem.Click
Process.Start("Notepad.exe")
End Sub

Private Sub RegeditToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegeditToolStripMenuItem.Click
Process.Start("Regedit.exe")
End Sub

Private Sub LineaDiComandoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LineaDiComandoToolStripMenuItem.Click
Process.Start("Cmd.exe")
End Sub

Private Sub InformazioniPaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InformazioniPaginaToolStripMenuItem.Click
WebBrowser1.ShowPropertiesDialog()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'File = File.Read("G:\colour.txt")
' frm_Opzioni.Txt_Iniziale.Text = ("http://" & oRead.ReadLine)
frm_Opzioni.TrackBar1.Value = 10
WebBrowser1.Navigate(frm_Opzioni.Txt_Iniziale.Text)
End Sub

Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem5.Click
WebBrowser1.Navigate("http://www.rubberwebbrowser.it")
End Sub

Private Sub SorgentePaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SorgentePaginaToolStripMenuItem.Click
HTML = WebBrowser1.DocumentText
frm_codice.Show()
frm_codice.TextBox1.Text = HTML
End Sub

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk

End Sub

Private Sub ApriFileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApriFileToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim browse As New WebBrowser
browse.Dock = DockStyle.Fill

TabControl1.SelectedTab.Controls.Add(browse)
TabControl1.TabPages.Add(TextBox1.Text)
End Sub

End Class

MarcoGG
20-11-2009, 22:35
Continuo a non spiegarmi la presenza di quei Timer... :mbe:
Inoltre manca la routine di Timer1.

AGENT47
21-11-2009, 17:07
il timer lo tolto, in quanto non mi serviva, se riguardi il codice ora, l'ho corretto

MarcoGG
22-11-2009, 11:27
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim browse As New WebBrowser
browse.Dock = DockStyle.Fill

TabControl1.SelectedTab.Controls.Add(browse)
TabControl1.TabPages.Add(TextBox1.Text)
End Sub

End Class

Immagino questa sia la routine incriminata.
Anche a causa di quei Timer, ho l'impressione generale che si tratti di codice buttato giù senza sapere esattamente cosa si stia facendo...
In particolare non mi spiego TabControl1.SelectedTab.Controls.Add(browse). Perchè usi SelectedTab ?

Inoltre, altro grosso dubbio sull'accoppiata :

TabControl1.SelectedTab.Controls.Add(browse)
TabControl1.TabPages.Add(TextBox1.Text)

Questo aggiunge un WebBrowser nuovo alla TabPage esistente e selezionata ( che quindi va a sovrapporsi a quello preesistente, altrimenti a che serve avere una TabPage vuota ? :mbe: ). E poi aggiunge una nuova TabPage vuota...

Se vuoi una nuova Tab del browser non è più logico così?

Private cntTp As Integer = 1

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

Dim WB As New WebBrowser
WB.Dock = DockStyle.Fill
Dim TP As New TabPage("nomeTP_" & cntTp)
TP.Name = "nomeTP_" & cntTp
cntTp += 1
TabControl1.TabPages.Add(TP)
TP.Controls.Add(WB)

End Sub

AGENT47
23-11-2009, 15:32
si, ho usato il tuo codice, la tab la crea ma rimane ancora il problema che in tutte le tab ho sempre la stessa pagina

MarcoGG
23-11-2009, 17:01
si, ho usato il tuo codice, la tab la crea ma rimane ancora il problema che in tutte le tab ho sempre la stessa pagina

Se hai davvero usato il mio codice non vedo come sia possibile.
A me crea semplicemente una TabPage nuova con un WebBrowser "about:blank".

AGENT47
23-11-2009, 17:17
te lo giuro, adesso ti posto il codice di nuovo:




Imports System.IO
Public Class Form1
Dim HTML As Object
Dim File As System.IO.StreamReader
Dim oRead As System.IO.StreamReader
Dim oWrite As System.IO.StreamReader
Dim RETEDISPONIBILE As Boolean
Dim OPEN As New OpenFileDialog()
Dim SAVE As New SaveFileDialog()
Dim VALUE As Boolean
Dim INSTANCE As New WebBrowser


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
WebBrowser1.Navigate(TextBox1.Text)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'pulsante indietro
WebBrowser1.GoBack()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'pulsante avanti
WebBrowser1.GoForward()
End Sub

Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
'avanzamento progress bar
ProgressBar1.Maximum = e.MaximumProgress
ProgressBar1.Value = e.CurrentProgress
TextBox1.Text = (WebBrowser1.Url.ToString)
End Sub

Private Sub OpzioniToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpzioniToolStripMenuItem.Click
frm_Opzioni.Show()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'pulsante home
WebBrowser1.Navigate(frm_Opzioni.Txt_Iniziale.Text)
End Sub

Private Sub SalvaPaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SalvaPaginaToolStripMenuItem.Click
'pulsante salva pagina
WebBrowser1.ShowSaveAsDialog()
End Sub

Private Sub AnnullaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnnullaToolStripMenuItem.Click
'pulsante annulla
TextBox1.Undo()
End Sub

Private Sub TagliaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TagliaToolStripMenuItem.Click
'pulsante taglia
TextBox1.Cut()
End Sub

Private Sub CopiaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopiaToolStripMenuItem.Click
'pulsante copia
TextBox1.Copy()
End Sub

Private Sub IncollaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles IncollaToolStripMenuItem.Click
'pulsante incolla
TextBox1.Paste()
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
'riconoscimento pulsante invio
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
WebBrowser1.Navigate(TextBox1.Text)
End If
End Sub

Private Sub TextBox1_MouseDoubleClick1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDoubleClick
TextBox1.SelectAll()
End Sub

Private Sub StampaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StampaToolStripMenuItem.Click
'pulsante stampa
WebBrowser1.ShowPrintDialog()
End Sub

Private Sub AnteprimaDiStampaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnteprimaDiStampaToolStripMenuItem.Click
'pulsante anteprima stampa
WebBrowser1.ShowPrintPreviewDialog()
End Sub

Private Sub EsciToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EsciToolStripMenuItem.Click
End
End Sub

Private Sub ApriIndirizzoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApriIndirizzoToolStripMenuItem.Click
frm_link.Show()
End Sub

Private Sub InformazioniToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InformazioniToolStripMenuItem.Click
frm_info.Show()
End Sub

Private Sub ControlloReteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ControlloReteToolStripMenuItem.Click
'contrllo disponibilità rete
RETEDISPONIBILE = My.Computer.Network.IsAvailable
If RETEDISPONIBILE = True Then
MsgBox("Rete Disponibile", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Else
MsgBox("Rete non Disponibile", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End If
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Me.Text = (WebBrowser1.DocumentTitle & " - Rubber Web Browser")
End Sub

Private Sub NotepadToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotepadToolStripMenuItem.Click
Process.Start("Notepad.exe")
End Sub

Private Sub RegeditToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegeditToolStripMenuItem.Click
Process.Start("Regedit.exe")
End Sub

Private Sub LineaDiComandoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LineaDiComandoToolStripMenuItem.Click
Process.Start("Cmd.exe")
End Sub

Private Sub InformazioniPaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InformazioniPaginaToolStripMenuItem.Click
WebBrowser1.ShowPropertiesDialog()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'File = File.Read("G:\colour.txt")
' frm_Opzioni.Txt_Iniziale.Text = ("http://" & oRead.ReadLine)
frm_Opzioni.TrackBar1.Value = 10
WebBrowser1.Navigate(frm_Opzioni.Txt_Iniziale.Text)
End Sub

Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem5.Click
WebBrowser1.Navigate("http://www.rubberwebbrowser.it")
End Sub

Private Sub SorgentePaginaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SorgentePaginaToolStripMenuItem.Click
HTML = WebBrowser1.DocumentText
frm_codice.Show()
frm_codice.TextBox1.Text = HTML
End Sub

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk

End Sub

Private Sub ApriFileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ApriFileToolStripMenuItem.Click
OpenFileDialog1.ShowDialog()
End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim cntTp As Integer = 1
Dim WB As New WebBrowser
WB.Dock = DockStyle.Fill
Dim TP As New TabPage("nomeTP_" & cntTp)
TP.Name = "nomeTP_" & cntTp
cntTp += 1
TabControl1.TabPages.Add(TP)
TP.Controls.Add(WB)

End Sub

End Class

MarcoGG
23-11-2009, 19:34
Mah, permetti una critica generale. Vedo parecchie cose che non tornano :

Dim HTML As Object
Perchè mai, se è destinato a contenere una String ?

Dim oRead As System.IO.StreamReader
Dim oWrite As System.IO.StreamReader
Perchè oWrite è uno StreamReader ? Dovrebbe essere un writer, a rigor di logica, ma soprattutto, perchè è dichiarato e mai utilizzato ?

Dim OPEN As New OpenFileDialog()
Dim SAVE As New SaveFileDialog()
Dim VALUE As Boolean
Dim INSTANCE As New WebBrowser
Questi 4 sono dichiarati e mai utilizzati.

Private Sub EsciToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EsciToolStripMenuItem.Click
End
End Sub
Perchè mai usare End ?

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk

End Sub
Sub vuota, a che serve ?

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim cntTp As Integer = 1
Dim WB As New WebBrowser
WB.Dock = DockStyle.Fill
Dim TP As New TabPage("nomeTP_" & cntTp)
TP.Name = "nomeTP_" & cntTp
cntTp += 1
TabControl1.TabPages.Add(TP)
TP.Controls.Add(WB)

End Sub
Questo NON è il mio codice. cntTp deve stare FUORI, altrimenti a che serve fare cntTp += 1 ???

Sono solo alcune stranezze che vedo, da un esame superficiale.

Il mio consiglio ? Butta tutto, chiediti con precisione COSA deve fare il programma, e riscrivi da zero.
Se hai fatto copia/incolla da un sito che ti ha spacciato questa roba per "tutorial", o simili... butta via anche il sito ! ;)

AGENT47
24-11-2009, 14:37
no, non ho fatto copia ed incolla, lo sto facendo insieme ad un mio amico...comunque grazie per il tuo supporto ora funge:) .. possiamo chiudere il topic
ciao ciao