Autor Beitrag
AlanWake
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Fr 24.09.10 15:27 
Hallo Leute,

ich bins mal wieder :)

Heute versuche ich den Webbrowser Firefox nachzubauen, bis jetzt habe ich folgendes:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
            WebBrowser NewBrowser = new WebBrowser();
            TabPage NewTabPage = new TabPage();
            tabControl1.TabPages.Add(NewTabPage);
            NewBrowser.Dock = DockStyle.Fill;
            NewTabPage.Controls.Add(NewBrowser);


Was mir bei meinem Code noch fehlt, ist: 1. Das das erstellte Tab auch gleich selektiert wird.
2. Das immer der Text in einer Textbox der aktuelle URL für das selektierte Tab ist.
Und 3. Das immer der aktuelle URL aus dem augewählten Tab in der Textbox steht :)

Mit diesem Code kann ich den Text eine Textbox als URL nehmen:


ausblenden C#-Quelltext
1:
                this.webBrowser1.Url = new System.Uri(this.toolStripComboBox1.Text, System.UriKind.RelativeOrAbsolute);					


Und mit diesem Code lasse ich immer den aktuellen URL in der Textbox anzeigen:

ausblenden C#-Quelltext
1:
            toolStripComboBox1.Text = webBrowser1.Url.AbsoluteUri;					


Bin dankbar für jede Hilfe :)

gruß Alan
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 24.09.10 19:26 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Heute versuche ich den Webbrowser Firefox nachzubauen

Ist ja mal interessant: Firefox mit der Internet-Explorer-Komponente nachbauen ;)

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Das das erstellte Tab auch gleich selektiert wird.

Siehe TabControl.SelectTab(TabPage)

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
2. Das immer der Text in einer Textbox der aktuelle URL für das selektierte Tab ist.
Und 3. Das immer der aktuelle URL aus dem augewählten Tab in der Textbox steht :)

Verwende das Ereignis TabControl.SelectedIndexChanged und passe dort den Inhalt der Textbox an.

Um den Inhalt der Textbox in die Location-Eigenschaft zu übertragen, erstellst du am besten einen Go-Button und führst deinen Code beim Klick aus.
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.09.10 13:18 
Hi,

danke für deine schnelle Antwort :)

Habe jetzt 2 Probleme :(

Das erste ist, das ich irgendwie diesen Link nicht kapiere :cry: msdn.microsoft.com/d...ed%28v=VS.80%29.aspx

Kannst du mir ein Code Beispiel geben :?:

Das 2 wäre wenn ich meinen Code in die Button1_Click schreibe aber den Code um einen URL zu bestädigen in die Button2_Click schreibe, dann aber der NewBrowser den ich erstellt habe in der Button1_Click im aktuellen Kontext der Button2_Click nicht verfügbar ist :(
Gibt es da eine Möglichkeit das der NewBrowser für alle private voids verfügbar ist :?:

gruß Alan

ps. Das mit dem neuestem Tab selektieren habe ich hinbekommen :)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
            WebBrowser NewBrowser = new WebBrowser();
            NewBrowser.Dock = DockStyle.Fill;
            TabPage NewTabPage = new TabPage();
            tabControl1.TabPages.Add(NewTabPage);
            NewTabPage.Controls.Add(NewBrowser);
            tabControl1.SelectedTab = NewTabPage;
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 25.09.10 17:11 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
as erste ist, das ich irgendwie diesen Link nicht kapiere :cry: msdn.microsoft.com/d...ed%28v=VS.80%29.aspx

Kannst du mir ein Code Beispiel geben :?:

Nein, denn man braucht nicht mal Code: Wähle das TabControl aus, gehe ins Eigenschaften-Fenster, klicke dort auf den Blitz (Ereignisse), suche das Ereignis SelectedIndexChanged und doppelklicke darauf. Jetzt hast du eine Methode, die aufgerufen wird, wenn der Benutzer eine andere Seite auswählt.

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Das 2 wäre wenn ich meinen Code in die Button1_Click schreibe aber den Code um einen URL zu bestädigen in die Button2_Click schreibe, dann aber der NewBrowser den ich erstellt habe in der Button1_Click im aktuellen Kontext der Button2_Click nicht verfügbar ist :(
Gibt es da eine Möglichkeit das der NewBrowser für alle private voids verfügbar ist :?:

Das würde nicht zum Ziel führen, denn dann könntest du ja immer nur auf den zuletzt erstellten Browser zugreifen.

Stattdessen muss der WebBrowser irgendwie mit der TabPage verknüpft werden. Dafür könntest du zum Beispiel die Eigenschaft Tag der TabPage verwenden:

ausblenden C#-Quelltext
1:
TabPage.Tag = NewBrowser;					

Um wieder darauf zugreifen zu können, musst du den Tag, der vom Typ Object ist, in einen WebBrowser umwandeln:

ausblenden C#-Quelltext
1:
WebBrowser webBrowser = tabControl1.SelectedTab.Tag as WebBrowser;					
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.09.10 20:11 
Wenn ich versuche ein neues Tab hinzuzufügen bekomme ich immer die Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt :cry:

Und bei TabPage.Tag = NewBrowser; erkennt mein Programm nicht das Wort TabPage an :(

Das ist was ich bis jetzt habe:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            WebBrowser webBrowser = tabControl1.SelectedTab.Tag as WebBrowser;
            textBox1.Text = webBrowser.Url.AbsoluteUri;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser NewBrowser = new WebBrowser();
            NewBrowser.Dock = DockStyle.Fill;
            TabPage NewTabPage = new TabPage();
            tabControl1.TabPages.Add(NewTabPage);
            NewTabPage.Controls.Add(NewBrowser);
            tabControl1.SelectedTab = NewTabPage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            NewBrowser.Url = new Uri(textBox1.Text);
        }


Ich wollte eigentlich auf Button 1 ein neues Tab erstellen und auf Button 2 den URL von der Textbox bestätigen :)

Aber bestimmt mache ich mal wieder alles falsch oder schreibe es in die falschen Felder :cry:

gruß Alan
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 25.09.10 20:16 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Und bei TabPage.Tag = NewBrowser; erkennt mein Programm nicht das Wort TabPage an :(

Stimmt, das heißt bei dir ja NewTabPage.

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich versuche ein neues Tab hinzuzufügen bekomme ich immer die Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt :cry:

Der Fehler sollte nicht mehr auftreten, sobald du den oberen behoben hast :)
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.09.10 20:30 
Beim Button 2 wird NewBrowser nicht erkannt weil es im aktuellen Kontext nicht verfügbar ist, wenn ich die Zeile dann lösche und versuche im Debug nur eine neue Tabpage zu erstellen bekomme ich bei der Zeile textBox1.Text = webBrowser.Url.AbsoluteUri; wieder die Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt :cry:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            WebBrowser webBrowser = tabControl1.SelectedTab.Tag as WebBrowser;
            textBox1.Text = webBrowser.Url.AbsoluteUri;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser NewBrowser = new WebBrowser();
            NewBrowser.Dock = DockStyle.Fill;
            TabPage NewTabPage = new TabPage();
            NewTabPage.Tag = NewBrowser;
            tabControl1.TabPages.Add(NewTabPage);
            NewTabPage.Controls.Add(NewBrowser);
            tabControl1.SelectedTab = NewTabPage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            NewBrowser.Url = new Uri(textBox1.Text);
        }


gruß Alan
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 25.09.10 20:53 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Beim Button 2 wird NewBrowser nicht erkannt weil es im aktuellen Kontext nicht verfügbar ist
ausblenden C#-Quelltext
 
18:
19:
20:
21:
/* ... */
        private void button2_Click(object sender, EventArgs e)
        {
            NewBrowser.Url = new Uri(textBox1.Text);
        }

Na, dort musst du natürlich auf die gleiche Weise auf den Browser zugreifen. Hast du das Prinzip überhaupt verstanden?

Wir müssen den Browser irgendwie mit der TabPage verknüpfen, damit wir jederzeit darauf zugreifen können. Also speichern wir eine Referenz auf den Browser in der Tag-Eigenschaft der TabPage. Überall, wo wir den Browser benötigen, holen wir ihn uns wieder heraus.

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich die Zeile dann lösche und versuche im Debug nur eine neue Tabpage zu erstellen bekomme ich bei der Zeile textBox1.Text = webBrowser.Url.AbsoluteUri; wieder die Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt :cry:

Nicht weinen, lieber mal überlegen, was der Debugger hier eigentlich will. Er meint, irgendein Objektverweis ist nicht festgelegt. Zu Deutsch: irgendeine Variable oder Eigenschaft ist null. Fahre einfach mal mit der Maus über die Bezeichner und schaue, was genau null ist, vielleicht kannst du dann eine Fehlerbehandlung einbauen, die diesen Fall abfängt :think:
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.09.10 21:09 
Hi, habe vielleicht sogar noch was besseres herausgefunden:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void button1_Click(object sender, EventArgs e)
        {
            TabPage NewTabPage = new TabPage();
            tabControl1.TabPages.Add(NewTabPage);
            tabControl1.SelectedTab = NewTabPage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            WebBrowser NewBrowser = new WebBrowser();
            NewBrowser.Dock = DockStyle.Fill;
            tabControl1.SelectedTab.Controls.Add(NewBrowser);
            NewBrowser.Url = new Uri(@"http://" + textBox1.Text);
        }


Mit dem Button 1 erstelle ich immer ein neues Tab und mit dem Button 2 erstelle ich einen NewBrowser und gehe gleich ins Netz mit dem URL den ich in der Textbox geschrieben habe, nur jetzt habe ich leider das Problem das der NewBrowser nur im Kontext der Button 2 Click ist, also wenn ich auf einem anderen Button: NewBrowser.GoBack(); programmieren will geht das nicht mehr :(
Gibt es da eine Möglichkeit, die GoBack Methode auf dem selektierten Tab anzuwenden :?:

gruß Alan
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 25.09.10 21:26 
user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Mit dem Button 1 erstelle ich immer ein neues Tab und mit dem Button 2 erstelle ich einen NewBrowser und gehe gleich ins Netz mit dem URL den ich in der Textbox geschrieben habe

Du erstellst für jede Adressänderung einen neuen WebBrowser und legst ihn einfach über den alten? Bedenke, der alte wird weder vom Formular, noch aus dem Speicher gelöscht! :o

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
nur jetzt habe ich leider das Problem das der NewBrowser nur im Kontext der Button 2 Click ist, also wenn ich auf einem anderen Button: NewBrowser.GoBack(); programmieren will geht das nicht mehr :(
Gibt es da eine Möglichkeit, die GoBack Methode auf dem selektierten Tab anzuwenden :?:

Hörst du mir eigentlich zu? Ich habe dir in den letzten drei Posts versucht zu erklären, wie du genau dieses Problem lösen kannst. Am besten liest du dir alles nochmal durch. Wenn es dir dann immer noch spanisch vorkommt, stelle gezielte Fragen oder lies dir erst einmal ein Tutorial durch, z.B. das Galileo OpenBook.
AlanWake Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.09.10 21:32 
Weißt du was, vergiss es.