从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript。这个相对比较简单。

从webBrowser访问winform,归纳出来大致4种办法:

1.利用webBrowser的Navigating事件

网页里的javascript代码:

window.location.href='close';

winform里的代码:

        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.AbsolutePath.IndexOf("close", StringComparison.CurrentCultureIgnoreCase) >= )
{
e.Cancel = true;
this.Close();
}
}

上面的代码是为了通知winform关闭webBrowser控件所在的winform。

2.利用window.name属性

这个属性在C#里可以通过webBrowser1.Document.Window.Name访问,不要被它的名字所迷惑,以为只能放window的name,实际上这个变量可以放几M的数据,通过这个变量可以在winform和网页之间传递数据

3.用socket通信

winform里做一个某端口的listener,网页里访问该端口进行通信。这个一般不用,因为太麻烦

4.使用comvisible属性

这个是较好的做法,可参考 https://stackoverflow.com/questions/34834774/interaction-between-webbrowser-control-and-windows-forms

05-11 20:04