Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将WinForms web浏览器控件弹出窗口重定向到另一个包含表单数据的WinForms web浏览器控件_C#_Winforms - Fatal编程技术网

C# 将WinForms web浏览器控件弹出窗口重定向到另一个包含表单数据的WinForms web浏览器控件

C# 将WinForms web浏览器控件弹出窗口重定向到另一个包含表单数据的WinForms web浏览器控件,c#,winforms,C#,Winforms,我有一个c#web浏览器,它显示的一个页面有一个表单。提交表单时,它会将数据发布到IE中的一个新窗口。我希望捕获该数据并将其转发到我应用程序中的另一个C#web浏览器。因此,我不希望它在调用javascript函数window.open时打开IE浏览器,我希望它在第二个浏览器窗口中打开它。您不能直接使用WebBrowser进行此操作,因为它不会向您提供进入NewWindow事件的事件参数的url,但是有一个解决方案是通过继承WebBrowser控件并添加一个新事件来提供url。 然后,您只需取消

我有一个c#web浏览器,它显示的一个页面有一个表单。提交表单时,它会将数据发布到IE中的一个新窗口。我希望捕获该数据并将其转发到我应用程序中的另一个C#web浏览器。因此,我不希望它在调用javascript函数window.open时打开IE浏览器,我希望它在第二个浏览器窗口中打开它。

您不能直接使用WebBrowser进行此操作,因为它不会向您提供进入NewWindow事件的事件参数的url,但是有一个解决方案是通过继承WebBrowser控件并添加一个新事件来提供url。 然后,您只需取消导航(使用事件的cancel属性)并将新url指向其他浏览器


编辑

好的,那么您需要做大量的手工工作,首先不允许新窗口,然后获取表单的提交事件,如下所示:

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

private void submit(object o, EventArgs e) {...}
并对submit方法进行所有处理,但您必须查看文档元素以提取所有post值,并手动将它们发布到其他webbrowser控件中


您可能还必须修改表单的onSubmit属性的html代码,以不打开新窗口,因为阻止它打开并不容易。

注意我在主题中所做的更改。没有所谓的“C#web浏览器”


您正在C#程序中使用Windows窗体Web浏览器控件。您希望在创建新窗口时收到通知,以便您可以创建另一个windows窗体来显示另一个包含新内容的Web浏览器控件。

我发现这篇文章在处理类似问题时很有用:

这会保留通过post发送的窗体数据并将其发送给其他浏览器吗知道在网页提交之前将表单元素添加到网页中的方法吗?