| Autor |
Beitrag |
AlanWake
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: Fr 24.09.10 15:27
Hallo Leute,
ich bins mal wieder
Heute versuche ich den Webbrowser Firefox nachzubauen, bis jetzt habe ich folgendes:
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:
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:
C#-Quelltext 1:
| toolStripComboBox1.Text = webBrowser1.Url.AbsoluteUri; |
Bin dankbar für jede Hilfe
gruß Alan
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 24.09.10 19:26
AlanWake hat folgendes geschrieben : | | Heute versuche ich den Webbrowser Firefox nachzubauen |
Ist ja mal interessant: Firefox mit der Internet-Explorer-Komponente nachbauen
AlanWake hat folgendes geschrieben : | | Das das erstellte Tab auch gleich selektiert wird. |
Siehe TabControl.SelectTab(TabPage)
AlanWake hat folgendes geschrieben : | 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 
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: 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 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
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 25.09.10 17:11
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.
AlanWake hat folgendes geschrieben : | 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:
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:
C#-Quelltext 1:
| WebBrowser webBrowser = tabControl1.SelectedTab.Tag as WebBrowser; |
|
|
AlanWake 
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: 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
Und bei TabPage.Tag = NewBrowser; erkennt mein Programm nicht das Wort TabPage an
Das ist was ich bis jetzt habe:
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
gruß Alan
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 25.09.10 20:16
|
|
AlanWake 
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: 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
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 25.09.10 20:53
AlanWake hat folgendes geschrieben : | Beim Button 2 wird NewBrowser nicht erkannt weil es im aktuellen Kontext nicht verfügbar ist
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.
AlanWake hat folgendes geschrieben : | 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  |
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 
|
|
AlanWake 
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: Sa 25.09.10 21:09
Hi, habe vielleicht sogar noch was besseres herausgefunden:
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 25.09.10 21:26
|
|
AlanWake 
      
Beiträge: 75
Erhaltene Danke: 2
|
Verfasst: Sa 25.09.10 21:32
Weißt du was, vergiss es.
|
|