Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - consiglio Browser a schede
Forum - C# / VB.NET - consiglio Browser a schede

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
kejan (Normal User)
Newbie


Messaggi: 20
Iscritto: 12/08/2009

Segnala al moderatore
Postato alle 18:18
Sabato, 15/08/2009
ciao sapete dirmi come potrei creare un browser a schede....
usando il controllo tabcontrol...XD

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 3:56
Domenica, 16/08/2009
Testo quotato

Postato originariamente da kejan:

ciao sapete dirmi come potrei creare un browser a schede....
usando il controllo tabcontrol...XD



Il browser a schede come lo vuoi fare tu è composto da 2 parti:
1) Componente WebBrowser http://www.dreamincode.net/forums/showtopic45487.htm
2) TabControl

Basta mettere in una scheda il componente WebBrowser...
Per ogni volta che viene richiamata una nuova scheda instanzi la scheda di base del controllo...

PM Quote
Avatar
kejan (Normal User)
Newbie


Messaggi: 20
Iscritto: 12/08/2009

Segnala al moderatore
Postato alle 16:06
Domenica, 16/08/2009
si ma come faccio ad aprire una nuova finestra con un tabcontrol come dici tu....

PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 19:50
Domenica, 16/08/2009
Testo quotato

Postato originariamente da kejan:

si ma come faccio ad aprire una nuova finestra con un tabcontrol come dici tu....



Non una finestra... una nuova tab
Queta è una funzione molto utile....

Codice sorgente - presumibilmente VB.NET

  1. Public Function CloneControl(ByVal sourceControl As Control) As Control
  2.         Dim result As Control = Nothing
  3.         Try
  4.             Dim t As Type = sourceControl.[GetType]()
  5.             result = DirectCast(Activator.CreateInstance(t), Control)
  6.             Dim sourceProps As PropertyDescriptorCollection = TypeDescriptor.GetProperties(sourceControl)
  7.             Dim destProps As PropertyDescriptorCollection = TypeDescriptor.GetProperties(result)
  8.             Dim i As Integer = 0
  9.             While i < sourceProps.Count
  10.                 If sourceProps(i).Attributes.Contains(DesignerSerializationVisibilityAttribute.Content) Then
  11.                     Dim sourceValues As Object = sourceProps(i).GetValue(sourceControl)
  12.                     If (TypeOf sourceValues Is IList) = True Then
  13.                         For Each child As Object In (TryCast(sourceValues, IList))
  14.                             Dim childCtrl As Control = CloneControl(TryCast(child, Control))
  15.                             Dim destValues As IList = TryCast(destProps(i).GetValue(result), IList)
  16.                             System.Diagnostics.Debug.Assert(Not destValues Is Nothing)
  17.                             If Not destValues Is Nothing Then
  18.                                 destValues.Add(childCtrl)
  19.                             End If
  20.                         Next
  21.                     End If
  22.                 Else
  23.                     destProps(sourceProps(i).Name).SetValue(result, sourceProps(i).GetValue(sourceControl))
  24.                 End If
  25.                 System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
  26.             End While
  27.             Return result
  28.         Catch ex As Exception
  29.             ' Your exception handling here…
  30.             MsgBox(ex.ToString)
  31.         End Try
  32.     End Function



Tramite questa linea di codice...
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim newTab As TabPage = CloneControl(NomeTab)


Ultima modifica effettuata da BugliL il 16/08/2009 alle 19:55
PM Quote
Avatar
maxas (Normal User)
Rookie


Messaggi: 53
Iscritto: 26/07/2009

Segnala al moderatore
Postato alle 21:53
Domenica, 16/08/2009
scusa ma ci sono alcune cose nel codice che da errore
questo e il codice
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Dim newTab As TabPage = CloneControl(NomeTab)
  3.     Public Function CloneControl(ByVal sourceControl As Control) As Control
  4.         Dim result As Control = Nothing
  5.         Try
  6.             Dim t As Type = sourceControl.[GetType]()
  7.             result = DirectCast(Activator.CreateInstance(t), Control)
  8.             Dim sourceProps As PropertyDescriptorCollection = TypeDescriptor.GetProperties(sourceControl)
  9.             Dim destProps As PropertyDescriptorCollection = TypeDescriptor.GetProperties(result)
  10.             Dim i As Integer = 0
  11.             While i < sourceProps.Count
  12.                 If sourceProps(i).Attributes.Contains(DesignerSerializationVisibilityAttribute.Content) Then
  13.                     Dim sourceValues As Object = sourceProps(i).GetValue(sourceControl)
  14.                     If (TypeOf sourceValues Is IList) = True Then
  15.                         For Each child As Object In (TryCast(sourceValues, IList))
  16.                             Dim childCtrl As Control = CloneControl(TryCast(child, Control))
  17.                             Dim destValues As IList = TryCast(destProps(i).GetValue(result), IList)
  18.                             System.Diagnostics.Debug.Assert(Not destValues Is Nothing)
  19.                             If Not destValues Is Nothing Then
  20.                                 destValues.Add(childCtrl)
  21.                             End If
  22.                         Next
  23.                     End If
  24.                 Else
  25.                     destProps(sourceProps(i).Name).SetValue(result, sourceProps(i).GetValue(sourceControl))
  26.                 End If
  27.                 System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
  28.             End While
  29.             Return result
  30.         Catch ex As Exception
  31.             ' Your exception handling here…
  32.             MsgBox(ex.ToString)
  33.         End Try
  34.     End Function
  35. End Class



errore lo da in queste parti
Dim newTab As TabPage = CloneControl(NomeTab)
e NomeTab l'errore

e poi
Dim sourceProps As PropertyDescriptorCollection=TypeDescriptor.GetProperties(sourceControl)
Dim destProps As PropertyDescriptorCollection=TypeDescriptor.GetProperties(result)                IfsourceProps(i).Attributes.Contains(DesignerSerializationVisibilityAttribute.Content) Then

ti consiglio di cercare con internet...

Ultima modifica effettuata da maxas il 16/08/2009 alle 23:13
PM Quote
Avatar
BugliL (Member)
Pro


Messaggi: 135
Iscritto: 09/08/2009

Segnala al moderatore
Postato alle 23:20
Domenica, 16/08/2009
Testo quotato

Postato originariamente da maxas:

scusa ma ci sono alcune cose nel codice che da errore

errore lo da in queste parti
Dim newTab As TabPage = CloneControl(NomeTab)
e NomeTab l'errore

e poi
Dim sourceProps As PropertyDescriptorCollection=TypeDescriptor.GetProperties(sourceControl)
Dim destProps As PropertyDescriptorCollection=TypeDescriptor.GetProperties(result)                IfsourceProps(i).Attributes.Contains(DesignerSerializationVisibilityAttribute.Content) Then



NomeTab è il nome della TabPage principale da copiare...
Pensavo fosse chiaro...
1) Se la TabPage da copiare si chiama "CIAO_Pippo" il codice è
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim newTab As TabPage = CloneControl(CIAO_Pippo)



2) Non puoi richiamare una funzione che gestisce un controllo prima ancora che la form sia stata creata... inserisci
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim newTab As TabPage = CloneControl(CIAO_Pippo)


in un evento...

Testo quotato

Postato originariamente da maxas:ti consiglio di cercare con internet...


In che senso? :-|

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:28
Lunedì, 17/08/2009
lasciando perdere per un momento i commenti su internet di maxas(:-|) penso che quella funzione sia davvero inutile per il problema del topic

lui deve creare a runtime, ogni volta che clicca su una tab, un oggetto WebBrowser, settando un paio di proprietà e basta....non vedo la necessità di clonare in quel modo(assurdo a parer mio) un controllo....

EDIT: se la tab non esiste la si crea anch'essa a runtime, ma nulla di più....perché complicarsi la vita in quel modo?

Ultima modifica effettuata da lorenzo il 17/08/2009 alle 11:30
PM Quote
Avatar
kejan (Normal User)
Newbie


Messaggi: 20
Iscritto: 12/08/2009

Segnala al moderatore
Postato alle 12:38
Lunedì, 17/08/2009
Ho cercato su internet e sono riuscito a scrivere questo codice...

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Dim int As Integer = 0
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.         Dim Browser As New WebBrowser
  5.         TabControl1.TabPages.Add("New Page")
  6.         Browser.Name = "Web Browser"
  7.         Browser.Dock = DockStyle.Fill
  8.         TabControl1.SelectedTab.Controls.Add(Browser)
  9.         int = int + 1
  10.         CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate("www.google.it")
  11.     End Sub
  12. End Class


funziona il problema  che qualsiasi pagina visito viene memorizzata  nella cronologia di IE come posso fare che non avvenga...

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 13:52
Lunedì, 17/08/2009
il controllo WebBrowser funziona come funziona il tuo browser predefinito...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo