2009-06-23 16 views
2

Ich habe einen C# -Webbrowser und eine der Seiten, die es anzeigt, hat ein Formular. Wenn das Formular übermittelt wird, werden Daten in einem neuen Fenster in IE veröffentlicht. Ich möchte diese Daten erfassen und an einen anderen C# -Webbrowser weiterleiten, den ich in meiner Anwendung habe. Ich möchte nicht, dass ein IE-Browser geöffnet wird, wenn die Javascript-Funktion window.open aufgerufen wird, ich möchte, dass sie im 2. Browser-Fenster geöffnet wird.Redirect WinForms Webbrowser Steuern Pop-ups zu einem anderen WinForms-Webbrowser-Steuerelement mit Formulardaten

+0

Kennt jemand eine Möglichkeit, ein Formular-Element auf dem Web-Seite hinzufügen, bevor es einreicht? –

Antwort

1

Sie können es nicht direkt mit WebBrowser tun, da es die URL nicht in die Ereignisvariablen des NewWindow-Ereignisses gibt, aber es gibt eine Lösung here, indem Sie das WebBrowser-Steuerelement übernehmen und ein neues Ereignis hinzufügen, das Ihnen die URL gibt. Dann müssen Sie nur die Navigation (mit der Cancel-Eigenschaft des Ereignisses) abbrechen und auf die neue URL in Ihrem anderen Browser zeigen.


bearbeiten

Ok, dann haben Sie, indem zunächst viel manuelle Arbeit tun, um ein neues Fenster disallowing und dann das Ereignis des Formulars wie folgt einreichen bekommen:

private void webBrowser1_DocumentCompleted(object sender, 
        WebBrowserDocumentCompletedEventArgs e) 
{ 
    webBrowser1.Document.Forms[0].AttachEventHandler("onsubmit", 
             new EventHandler(submit)); 
} 

private void submit(object o, EventArgs e) {...} 

Und tun die ganze Handhabung in der Methode submit, aber Sie müssen in die Dokumentelemente schauen, um alle Postenwerte zu extrahieren und sie manuell in Ihre andere webbrowser Steuerung zu setzen.

Möglicherweise müssen Sie auch den HTML-Code des Attributs onSubmit des Formulars ändern, um kein neues Fenster zu öffnen, da es nicht einfach ist, das Öffnen zu stoppen.

+0

Werden die Formulardaten, die über POST gesendet werden, beibehalten und an den anderen Browser gesendet? –

1

Beachten Sie die Änderung, die ich an dem Thema vorgenommen habe. Es gibt keinen "C# -Webbrowser".

Sie verwenden das Windows Forms-Webbrowsersteuerelement in einem C# -Programm. Sie möchten benachrichtigt werden, wenn ein neues Fenster erstellt wird, damit Sie ein anderes Windows Forms-Formular erstellen können, um ein anderes Webbrowser-Steuerelement anzuzeigen, das den neuen Inhalt enthält.

Verwandte Themen