从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