Announcement

Collapse
No announcement yet.

WebBrowser-Control: PopUp-Funktion

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WebBrowser-Control: PopUp-Funktion

    [edit=gfoidl] Hab den Titel geändert. Ursprünglich: 'Neue Instanz einer Form erstellen' [/edit]
    Zuletzt editiert von majamigu; 07.05.2010, 14:40. Reason: Moderation

  • #2
    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
    Eine neue Instanz einer form anlegen und diese anzeigen

    Comment


    • #3
      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.
      So wie ich das lese/interpretiere gilt folgende Antwort:

      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


      • #4
        Eventuell auch das hier:

        http://sourceforge.net/projects/dockpanelsuite/

        Find ich auch sehr gut

        Comment


        • #5
          Originally posted by fanderlf View Post
          Eventuell auch das hier:

          http://sourceforge.net/projects/dockpanelsuite/

          Find ich auch sehr gut
          Ich auch Stellt natürlich auch eine saubere Variante dar die ich sogar meinem obigen Vorschlag vorziehen würde.



          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            [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


            • #7
              Dafür musst Du aber in der Form die den WebBrowser enthält den WebBroser auf public setzen.
              Dieses 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ü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #8
                Originally posted by majamigu
                Vielen Dank für eure Antworten. Ich werde das gleich ausprobieren. Aber anscheinend ist es genau das, wonach ist gesucht habe.
                Ist das dein Standardantwort?


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Aber hast du vllt. eine Antwort für mich parat?
                  In Bezug auf was?


                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment


                  • #10
                    Originally posted by gfoidl View Post
                    Dieses 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ü
                    Du darst nicht immer davon ausgehen, dass Design Patterns Thematik auffährt. Die schnellste, wenn auch nicht schönste, Lösung ist das WebBrowser Control auf public zu setzen

                    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


                    • #11
                      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.
                      Wenn es ein Browser werden soll warum machst du es nicht die gängigen Browser.
                      1. neues (leeres) Fenster öffnen
                      2. Benutzer gibt in dieses Fenster die Adresse ein
                      3. dieses Fenster kennt die Adresse denn sie wurde in einm Control dieses Fensters eingegeben
                      4. 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


                      • #12
                        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


                        • #13
                          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.
                          Dafür kann das Navigating-Ereignis abgefangen werden, dort die Url geprüft und wenn es eine URL ist bei der ein PopUp erscheinen soll dann erstelle eine neue Form/Tab/sonst was und setze die Eigenschaft für die neue Url.

                          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

                          Working...
                          X