[edit=gfoidl] Hab den Titel geändert. Ursprünglich: 'Neue Instanz einer Form erstellen' [/edit]
Announcement
Collapse
No announcement yet.
WebBrowser-Control: PopUp-Funktion
Collapse
X
-
Wann genau soll denn was genau für ein Fenster aufgerufen werden? Ich werd aus der Erklärung nicht schlau.
Generell kannst Du mit
Code:meineForm form = new meineForm(); //meineForm entspricht dem Namen der Klasse der Form form.ShowDialog(); //oder .Show() für ein nicht modales Fenster
-
genauer gesagt eine Art Web Browser - sobald ein neues, zusätzliches Fenster aufgerufen wird, eine vorhande Forum in der Projektmappe erneut und zusätzlich aufrufen. Ich nutze einfach nur den WebBrowser aus der Toolbox. Also im Prinzip den IE.
Erstell ein TabControl und füge für jedes "Fenster" eine TabPage hinzu und der TabPage fügst du ein WebBrowserControl hinzu.
Bzw. kannst du von der TabPage ableiten und im Konstruktor gleich das WebbrowserControl hinzufügen.
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
-
Comment
-
Originally posted by fanderlf View Post
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
-
[highlight=vb]
Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
Dim neuesFenster As New firewalker
neuesFenster.myWebBrows.URL = new URI("Hier URL rein") // übergibt die URL an den neuen WebBrowser
neuesFenster.Show()
e.Cancel = true //verhindert dass ein neues Fenster geöffnet wird
End Sub
[/highlight]
Dafür musst Du aber in der Form die den WebBrowser enthält den WebBroser auf public setzen.
Comment
-
Dafür musst Du aber in der Form die den WebBrowser enthält den WebBroser auf public setzen.
Ein privates Feld der Form niemals public setzen.
Wenn schon eine Eigenschaft in der Klasse (die Form ist auch nur eine Klasse) die den Webbrowser zurückgibt.
Noch besser wäre eine Methode in der Form wie zB SetUrl(...). Das entspricht Kapselung und ist ein erster Schritt Richtung MVP.
In MVP würde der ApplicationController informiert werden dass ein neues Fenster anzuzueigen und dessen Url auf eine die übergeben zu setzen ist.
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
-
Originally posted by majamiguVielen Dank für eure Antworten. Ich werde das gleich ausprobieren. Aber anscheinend ist es genau das, wonach ist gesucht habe.
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
-
Originally posted by gfoidl View PostDieses Aussage wundert mich - ok es ist Sonntag
Ein privates Feld der Form niemals public setzen.
Wenn schon eine Eigenschaft in der Klasse (die Form ist auch nur eine Klasse) die den Webbrowser zurückgibt.
Noch besser wäre eine Methode in der Form wie zB SetUrl(...). Das entspricht Kapselung und ist ein erster Schritt Richtung MVP.
In MVP würde der ApplicationController informiert werden dass ein neues Fenster anzuzueigen und dessen Url auf eine die übergeben zu setzen ist.
mfG Gü
Wir haben früher NUR so programmiert... genau deswegen beschäftige ich mich momente mit DDD und Design Patterns, damit wir mal von dieser furchtbaren Programmierpraxis Abstand bekommen.
Dass man eine Funktion SetURL auf der Form die den WebBrowser enthält implementieren sollte ist mir auch klar Ich weiss nur nicht ob das dem Threadersteller direkt so eingeleuchtet hätte, bei den Fragen die hier gestellt werden.
Comment
-
Mir geht es ja nicht um die Url die aktuellen im WebBrowser des "Hauptfensters" angezeigt wird, sondern um die Url, die der Benutzer aufrufen wollte, als sich das neue Fenster geöffnet hat.
- neues (leeres) Fenster öffnen
- Benutzer gibt in dieses Fenster die Adresse ein
- dieses Fenster kennt die Adresse denn sie wurde in einm Control dieses Fensters eingegeben
- Navigation zu der eingegeben Adresse
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
-
Genau das tut das WebBrowser Control doch, oder nicht? Oder möchtest Du eines Deiner eigenen Fenster öffnen, wenn z.B. ein PopUp geöffnet wird?
Ich weiss nicht ob man das WebBrowser Control in dieser Hinsicht überhaupt beeinflussen kann, ausser evtl. durch ableiten von der Basisklasse oder ähnliches, allerdings wird das mit Sicherheit dann nicht ganz so trivial.
Comment
-
Man ist in einem Online-Shop und klickt auf die AGB's. Dann ist es ja häufig der Fall, dass sich nun ein Pop-up-Fenster öffnet. Genau so etwas möchte ich programmieren.
Wenn das zu anspruchsvoll sein sollte wäre es besser sich zuerst mit den Grundlagen auseinander zu setzen. Wie zB dem OpenBook.
Oder wo genau liegt das Problem?
mfG Gü"Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler
Comment
Comment