Webbrowser Tab Problem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Mete1997.

    Webbrowser Tab Problem

    Hey Leute ,
    hab wieder ein Problem mit meinem Webbrowser und zwar hab ich eine neue Tab Funktion. Wenn ich einen neuen Tab öffne öffnet er auch einen navigiere ich mit ihm zu Google z.B und öffne einen neuen Tab dann ist von dem neuen Tab das Favicon auch von Google.Kann ich nicht wenn ich einen neuen Tab öffne das Favicon vom neuen Tab = Nothing machen?
    Meine Bestellung der neuen Glaskugel verzögert sich immer noch, kann noch einige Milliarden Jahre dauern :D , also gib- wie du es immer tun solltest- uns Code.
    Aber ich wette, dass du keine neue Instanz des Tabs anlegst und durch das Referenzengesetz du den gleichen Tab behältst

    mfg
    Compffreak
    Ich habe 2 Global deklarierte Strings TabNavigate und TabText. In meiner Funktionen Class sieht meine neue Tab Funktion so aus

    VB.NET-Quellcode

    1. Dim WebBrowser As New Skybound.Gecko.GeckoWebBrowser
    2. Form1.Tabcontrol1.TabPages.Add(CStr(TabCount), "Neuer Tab")
    3. Form1.Tabcontrol1.SelectTab(CInt(TabCount) - 1)
    4. Form1.Tabcontrol1.SelectedTab.Controls.Add(WebBrowser)
    5. WebBrowser.Name = "- Browser"
    6. WebBrowser.Dock = DockStyle.Fill
    7. Form1.SuchBox.Focus()
    8. TabCount += 1
    9. CType(Form1.Tabcontrol1.SelectedTab.Controls.Item(0), Skybound.Gecko.GeckoWebBrowser).Navigate(TabNavigate)
    10. Form1.Tabcontrol1.SelectedTab.Name = TabText
    11. AddHandler WebBrowser.DocumentTitleChanged, New EventHandler(AddressOf WebBrowserDocumentTitle_Changed)
    12. AddHandler WebBrowser.CreateWindow, New Skybound.Gecko.GeckoCreateWindowEventHandler(AddressOf WebBrowser_Windows)
    13. AddHandler WebBrowser.ProgressChanged, New Skybound.Gecko.GeckoProgressEventHandler(AddressOf WebBrowser_Progress)

    Die 2 Global deklarierten Strings TabNavigate und TabText bekommen ihre Werte wenn ich auf den neuen Tab Button drücke.

    VB.NET-Quellcode

    1. Public Shared Navigate As String = Nothing
    2. Public Shared TabText As String = Nothing
    Dein Code ist wirklich schrecklich
    1.

    VB.NET-Quellcode

    1. Form1.Tabcontrol1.TabPages.Add(CStr(TabCount), "Neuer Tab")

    Wtf soll das bedeuten, eine Add Methode mit zwei Parameter kenne ich nur bei einem Dictionary
    2. Form1... ist immer noch schlecht, es ist eine Klasse und wird es in 1000 Jahren noch eine Klasse sein, also die aktuellen Objektinstanz Me nutzen
    3. Einen Webbrowser im Code einen Namen zu geben, ist vollkommen unnötig(aber wenn du willst)
    Sorry aber bevor du diese 3 (und wahrscheinlich mehr) Punkte nicht gelöst hast, kann und will dir niemand helfen. Programmieren ist nciht nur herumgebastel, sondern auch ein Konzept, das man befolgen muss/sollte.

    mfg
    Compffreak
    Edit: sorry Punkt 1 fällt raus. Hab grad in der Msdn nachgelesen. ist aber immer noch nicht so pricke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „compffreak“ ()

    compffreak schrieb:

    2. Form1... ist immer noch schlecht, es ist eine Klasse und wird es in 1000 Jahren noch eine Klasse sein, also die aktuellen Objektinstanz Me nutzen

    Ich greife von Form1 auf meine Funktionen Class zu also ist es schon richtig so.

    compffreak schrieb:

    3. Einen Webbrowser im Code einen Namen zu geben, ist vollkommen unnötig(aber wenn du willst)

    Völlig unnötig ist es nicht ich befolge ein ganz anderes Konzept deshalb ist es wichtig das ich das benutze.

    compffreak schrieb:

    Sorry aber bevor du diese 3 (und wahrscheinlich mehr) Punkte nicht gelöst hast, kann und will dir niemand helfen. Programmieren ist nciht nur herumgebastel, sondern auch ein Konzept, das man befolgen muss/sollte.

    An diesen Punkten find ich nur Punkt 1 wichtig das hab ich auch gelöst

    VB.NET-Quellcode

    1. Dim NeuerTab As New TabPage
    2. Form1.Tabcontrol1.TabPages.Add(NeuerTab)

    Das was ich mache ist kein herumbasteln. Ich habe Option Strict ON und den Microsoft.VisualBasic Namespace entfernt. Ich brauche nur einen Tipp bzw einen Lösungsweg wie ich das Favicon sozusagen wieder null = nothing mache.

    Ich greife von Form1 auf meine Funktionen Class zu also ist es schon richtig so.

    Was meinst du denn mit damit, im vorliegenden Quelltext greifst du auf Controls zu und da nimmt man Me oder ncihts.

    Aber gut, wie wird denn das Favicon geändert im Code sehe ich nichts davon.

    mfg
    Compfreak
    Nun ich hatte den Fehler im Form-Load Event. Ich habe jetzt nur das Problem wenn ich irgendwohin navigiere mit meinem Tab und dann einen neuen öffne das er das gleiche Favicon hat. Das Favicon wird beim Suchen geändert.
    Das Favicon wird so geändert beim Suchen.

    VB.NET-Quellcode

    1. Try
    2. iCount += 1
    3. Form1.ImageList.Images.Add(iCount.ToString(), Funktionen.Favicon(New Uri(Funktionen.URLControl(Form1.Suchbox.Text))))
    4. Form1.Tabcontrol1.SelectedTab.ImageIndex = Form1.ImageList.Images.IndexOfKey(iCount.ToString())
    5. Catch
    6. Form1.Tabcontrol1.SelectedTab.ImageIndex = 0

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mete1997“ ()

    Mit welchen Code denn jetzt.
    Poste mal alles was mit diesen problem zu tun haben könnte

    Jetz mach mal ein Haltepunkt und step dich durch, das Try catch sieht höchst verdächtigt aus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „compffreak“ ()

    Mete1997 schrieb:

    also ist es schon richtig so.

    Bullshit.
    Form1 ist eine Klasse und Klassen sind Referenztypen und folglich muss man eine Instanz von ihnen erstellen. Was machst Du hier? Du behandelst die Klasse wie ein Objekt und das ist falsch. Kennst Du überhaupt den Unterschied zwischen beidem? Wohl eher nicht.
    Lerne bitte ERSTMAL die Grundlagen, bevor Du Dich an einen Browser wagst.
    Instanziierung von Forms und Aufruf von Dialogen
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Mete1997 schrieb:

    VB.NET-Quellcode

    1. Form1.Tabcontrol1.TabPages.Add(CStr(TabCount), "Neuer Tab")
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    compffreak schrieb:

    Jetz mach mal ein Haltepunkt und step dich durch, das Try catch sieht höchst verdächtigt aus

    Ich habe grad den Durchblick an meinem Code verloren ich passe ihn zurzeit an um euch weiteren Code anzuzeigen da einiges aufgehört hat zu funktionieren.

    ichduersie schrieb:

    Also wenn du das Icon der Form änderst, kannst du einfach die ShowIcon-Eigenschaft ändern.

    Das Icon von einer TabPage meine ich nicht von der Form. Wenn ich z.B Google offen habe in meinem ersten Tab und einen neuen öffne hat mein neuer Tab das gleiche Favicon. Bitte Thread nochmal durchlesen.

    compffreak schrieb:

    ich denke das Programm schmeißt ne Exception und das Try Catch blockt es ab. Dadurch wird der ImageIndex auf 0 gesetzt und bleibt bei Goolgle

    Ich schau mir grad meinen Code an und überarbeite einige Stellen weil einige Stellen nicht mehr klappen. Diese Stelle gehört dazu.

    Trade schrieb:

    Bullshit.
    Form1 ist eine Klasse und Klassen sind Referenztypen und folglich muss man eine Instanz von ihnen erstellen. Was machst Du hier? Du behandelst die Klasse wie ein Objekt und das ist falsch.

    Wie meinst du eine Klasse ? Bitte etwas ausführlicher. Ich habe dort Controls drauf also sollte es doch eher eine Form als eine Klasse sein oder nicht?
    @RodFromGermany ich schau es mir jetzt an.
    Junge,
    eine Form hat einen Codebehind, das ist eine Klasse. Glaube es halt. Ich bitte Dich nochmal, lerne Dir die Grundlagen an, da fehlt novh komplett alles!

    Und eine Klasse ist kein Objekt und auf Controls sollte nicht von außen zugegriffen werden.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Mete1997 Um es mal freundlicher auszudrücken, was @Trade dir sagen möchte: Was du geschrieben hast in VB6. Du programmierst jetzt aber in VB.NET und das ist eben eine andere Sprache wie VB6, und leider hat Microsoft eben einige alte Funktionen noch dringelassen. Wenn diese nicht da wären, dann müsstest du, damit das Programm funktioniert, das Tutorial von @RodFromGermany befolgen und du müsstest das machen, was @Trade dir sagt, weil das kein VB.NET ist, was du geschrieben hast. Das ist VB6 und damit veralteter Quark, der hier nichts zu suchen hat.

    @Trade Schon gleich im vorraus, entschuldigung, wenn ich wiederhole, was andere schon geschrieben haben.
    Visual Basic Express hat irgendwie einen Bug. Und zwar wenn ich eine Funktion normal aufrufe funktioniert alles tadellos. Aber wenn ich diese Funktion anders aufrufen muss aber 100% das gleiche ausgeführt wird zeigt VBE das i falsch an im Titel von meinem Programm womit TabControl1.SelectedIndexChanged nicht ausgeführt wird.

    Nachtrag:Ich habe deinen Post nicht gesehen @ichduersie ich lese ihn mir durch und editiere diesen Post entsprechend.
    Hab beide Probleme gelöst hat etwas gedauert aber es klappt. Habe die Funktion wie Neuer Tab gemacht also ich zeigs einfach

    VB.NET-Quellcode

    1. Private Sub LeereSeite()
    2. Dim Use As New Skybound.Gecko.GeckoWebBrowser
    3. Dim UseTabpage As New TabPage
    4. Tabcontrol1.TabPages.Add(UseTabpage)
    5. Tabcontrol1.SelectedTab =UseTabpage
    6. Tabcontrol1.SelectedTab.Text = "Use Tab"
    7. Tabcontrol1.SelectedTab.Controls.Add(Use)
    8. Use.Name = " - Browser"
    9. Use.Dock = DockStyle.Fill
    10. Suchbox.Text = "about:blank"
    11. Suchbox.Focus()
    12. TabCount += 1
    13. CType(Tabcontrol1.SelectedTab.Controls.Item(0), Skybound.Gecko.GeckoWebBrowser).Navigate("about:blank)
    14. End Sub
    Und was ist jetzt mal mit den Grundlagen?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: